private void Parse(Stream s) { var br = new BinaryStreamWrapper(s); br.ByteOrder = ByteOrder.BigEndian; mId = (SoundProperty)br.ReadUInt32(); mTypeCode = (DataType)br.ReadUInt16(); mRepCode = br.ReadUInt16(); var data = new List <TypedData>(); if (!HasTypeData) { data.Add(ReadTypedData(0, handler, mTypeCode, s)); } else { int count = br.ReadInt32(); int itemSize = br.ReadInt32(); if (itemSize != ItemSize) { throw new InvalidDataException(String.Format("Bad item size: Expected {0}, but got {1}", ItemSize, itemSize)); } for (int i = 0; i < count; i++) { data.Add(ReadTypedData(0, handler, mTypeCode, s)); } } mItems = new DataList(handler, data, this); }
public override void UnParse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Write(mFlags); s.Write(mDdsResource); s.Write(mByte01); s.Write(mInt01); s.Write(mByte02); if (isTheSims4) { s.Write(mInt02); } s.Write(mLifetime); mRotationCurve.UnParse(stream); mSizeCurve.UnParse(stream); mAlphaCurve.UnParse(stream); mColorCurve.UnParse(stream); mAspectCurve.UnParse(stream); s.Write(mAlphaVary); s.Write(mSizeVary); s.Write(mRotationVary); s.Write(mTextureRepeat); mTextureOffset.UnParse(stream); s.Write(mEmitColorMapId); if (mSection.Version >= 2) { s.Write(mByte03); //version 2+ } }
public override void UnParse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Write(mFlags); s.Write(mDensity); s.Write(mComponentName, StringType.ZeroDelimited); s.Write(mStart); s.Write(mSourceType); s.Write(mSourceSize); mPreTransform.UnParse(stream); mSizeCurve.UnParse(stream); s.Write(mSizeVary); mPitchCurve.UnParse(stream); mRollCurve.UnParse(stream); mHeadingCurve.UnParse(stream); s.Write(mPitchVary); s.Write(mRollVary); s.Write(mHeadingVary); s.Write(mPitchOffset); s.Write(mRollOffset); s.Write(mHeadingOffset); mColorCurve.UnParse(stream); mColorVary.UnParse(stream); mAlphaCurve.UnParse(stream); s.Write(mAlphaVary); mSurfaces.UnParse(stream); s.Write(mEmitMapId); s.Write(mColorMapId); s.Write(mPinMapId); mAltitudeRange.UnParse(stream); mDrawInfo.UnParse(stream); s.Write(mOverrideSet); s.Write(mMessageId); }
protected override void Parse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Read(out mResourceId); s.Read(out mFormat); s.Read(out mDrawMode); if ((mDrawMode & 0x80) == 0x80) { s.Read(out mInt01); } if ((mDrawMode & 0x40) == 0x40 && !isTheSims4) { s.Read(out mByte01); } if (mSection.Version >= 0x0006) { s.Read(out mDrawFlags); } else { byte flags; s.Read(out flags); mDrawFlags = flags; } s.Read(out mBuffer); s.Read(out mLayer); s.Read(out mSortOffset); s.Read(out mResourceId2); }
protected override void Parse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Read(out mScreenRatio); s.Read(out mSize); }
public override void UnParse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); mElements.UnParse(stream); s.Write(mFlags); }
public override void UnParse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Write(mComponentType); s.Write(mFlags); mLocalXForm.UnParse(stream); s.Write(mLODBegin); s.Write(mLODEnd); mLODScales.UnParse(stream); s.Write(mEmitScaleBegin); //1.0 s.Write(mEmitScaleEnd); //1.0 s.Write(mSizeScaleBegin); //1.0 s.Write(mSizeScaleEnd); //1.0 s.Write(mAlphaScaleBegin); //1.0 s.Write(mAlphaScaleEnd); //1.0 s.Write(mAppFlags); s.Write(mAppFlagsMask); s.Write(mSelectionGroup); s.Write(mSelectionChance); s.Write(mTimeScale); s.Write(mComponentIndex); if (mSection.Version >= 2) { s.Write(mByte03); //version 2+ s.Write(mByte04); //version 2+ } if (mSection.Version >= 3) { mFloatList01.UnParse(stream); } }
public override void UnParse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Write(mResourceId); s.Write(mFormat); s.Write(mDrawMode); if ((mDrawMode & 0x80) == 0x80) { s.Write(mInt01); } if ((mDrawMode & 0x40) == 0x40 && !isTheSims4) { s.Write(mByte01); } if (mSection.Version >= 0x0006) { s.Write(mDrawFlags); } else { byte flags = (byte)(mDrawFlags & 0xFF); s.Write(flags); } s.Write(mBuffer); s.Write(mLayer); s.Write(mSortOffset); s.Write(mResourceId2); }
protected override void Parse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Read(out mFlags); //mFlags &= 0x7F; s.Read(out mDdsResource); s.Read(out mByte01); s.Read(out mInt01); s.Read(out mByte02); if (isTheSims4) { s.Read(out mInt02); } s.Read(out mLifetime); mRotationCurve = new DataList <FloatValue>(handler, stream); mSizeCurve = new DataList <FloatValue>(handler, stream); mAlphaCurve = new DataList <FloatValue>(handler, stream); mColorCurve = new DataList <ColorValue>(handler, stream); mAspectCurve = new DataList <FloatValue>(handler, stream); s.Read(out mAlphaVary); s.Read(out mSizeVary); s.Read(out mRotationVary); s.Read(out mTextureRepeat); mTextureOffset = new Vector2ValueLE(requestedApiVersion, handler, stream); s.Read(out mEmitColorMapId); if (mSection.Version >= 2 && stream.Position < stream.Length) { s.Read(out mByte03); //version 2+ } }
public uint this[string key] { get { int num = base.BinarySearch(0, base.Count, null, new StringHandleComparer(key)); if (num < 0) { throw new KeyNotFoundException(); } return(base[num].Index); } set { int num = base.BinarySearch(0, base.Count, null, new StringHandleComparer(key)); if (num >= 0) { base[num].Index = value; } else { MemoryStream s = new MemoryStream(); BinaryStreamWrapper wrapper = new BinaryStreamWrapper(s, ByteOrder.BigEndian); wrapper.WriteString(key, StringType.ZeroDelimited); s.Position = 0L; base.Insert(~num, new VisualEffectName(0, base.handler, s, value)); } } }
public override void UnParse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); mTimeRange.UnParse(stream); s.Write(mEffectName, StringType.ZeroDelimited); }
public override void UnParse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Write(mData.X); s.Write(mData.Y); }
protected override Stream UnParse() { var outputStream = new MemoryStream(); var s = new BinaryStreamWrapper(outputStream, ByteOrder.BigEndian); s.Write(mVersion); if (mEffectSections == null) { mEffectSections = new EffectSectionList(OnResourceChanged); } mEffectSections.UnParse(outputStream); if (mResourceSections == null) { mResourceSections = new ResourceSectionList(OnResourceChanged); } mResourceSections.UnParse(outputStream); if (mVisualEffectSections == null) { mVisualEffectSections = new VisualEffectSection(0, OnResourceChanged, 2); } s.Write(mVisualEffectSections.Version); mVisualEffectSections.UnParse(outputStream); if (mVisualEffectIds == null) { mVisualEffectIds = new VisualEffectIdList(OnResourceChanged); } mVisualEffectIds.UnParse(outputStream); if (mVisualEffectNames == null) { mVisualEffectNames = new VisualEffectNameList(OnResourceChanged); } mVisualEffectNames.UnParse(outputStream); return(outputStream); }
public override void UnParse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Write(mScreenRatio); s.Write(mSize); }
protected override void Parse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Read(out mData.X); s.Read(out mData.Y); }
protected override void Parse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Read(out mMapId); s.Read(out mFlags); mFlags &= 0x3FF; s.Read(out mMapType); s.Read(out mImageId); mBounds = new RectangleValue(requestedApiVersion, handler, stream); s.Read(out mChannel); s.Read(out mOpKind); s.Read(out mOpArgMapId1); s.Read(out mOpArgMapId2); s.Read(out mOpArgMapId3); s.Read(out mOpArgMapId4); mOpArgValue1 = new Vector4ValueLE(requestedApiVersion, handler, stream); mOpArgValue2 = new Vector4ValueLE(requestedApiVersion, handler, stream); mOpArgValue3 = new Vector4ValueLE(requestedApiVersion, handler, stream); mOpArgValue4 = new Vector4ValueLE(requestedApiVersion, handler, stream); }
protected override void Parse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); mTimeRange = new Vector2ValueLE(requestedApiVersion, handler, stream); s.Read(out mEffectName, StringType.ZeroDelimited); }
public override void UnParse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Write(mIndex); s.Write(mEffectId); }
protected override void Parse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); mPosition = new Vector3ValueLE(requestedApiVersion, handler, stream); mVelocity = new Vector3ValueLE(requestedApiVersion, handler, stream); s.Read(out mTime); }
protected override void Parse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); mElements = new DataList <Element>(handler, stream); s.Read(out mFlags); //mFlags &= 0xF; }
public override void UnParse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Write(mTimeRate); mRateDir.UnParse(stream); mWiggleDir.UnParse(stream); }
public override void UnParse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); mPosition.UnParse(stream); mVelocity.UnParse(stream); s.Write(mTime); }
public override void UnParse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Write(mEmitScale); s.Write(mSizeScale); s.Write(mAlphaScale); }
protected override void Parse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Read(out mEmitScale); s.Read(out mSizeScale); s.Read(out mAlphaScale); }
protected override void WriteElement(Stream stream, Property element) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Write((ulong)element.Key); s.Write((byte)element.ValueType); element.UnParse(stream); }
protected override Property CreateElement(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); var key = (PropertyKey)s.ReadUInt64(); var val = (ValueType)s.BaseStream.ReadByte(); return(Property.CreateInstance(0, elementHandler, val, key, stream)); }
protected override void Parse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Read(out mTimeRate); mRateDir = new Vector3ValueLE(requestedApiVersion, handler, stream); mWiggleDir = new Vector3ValueLE(requestedApiVersion, handler, stream); }
public override void UnParse(Stream stream) { var s = new BinaryStreamWrapper(stream, ByteOrder.BigEndian); s.Write(HashedName); s.Write((ulong)Shader); mProperties.UnParse(stream); }
public override void UnParse(Stream s) { var sw = new BinaryStreamWrapper(s, ByteOrder.LittleEndian); sw.Write(mData.R); sw.Write(mData.G); sw.Write(mData.B); }
protected override void Parse(Stream s) { var sw = new BinaryStreamWrapper(s, ByteOrder.LittleEndian); sw.Read(out mData.R); sw.Read(out mData.G); sw.Read(out mData.B); }
public unsafe void TestMethod() { MemoryStream stream = new MemoryStream(); BinaryStreamWrapper bs = new BinaryStreamWrapper(stream, false); Random rand = new Random(); int seed = rand.Next(); rand = new Random(seed); byte[] data = new byte[16]; byte[] data2 = new byte[16]; fixed (byte* lp = data) { for (int x = 0; x < 10000; x++) { rand.NextBytes(data); while (rand.Next(4) < 2) bs.Write(*(byte*)lp); int skip = rand.Next(40) + 1; bs.Position += skip; bs.Position -= rand.Next(skip); rand.NextBytes(data); while (rand.Next(4) < 2) bs.Write(*(sbyte*)lp); rand.NextBytes(data); while (rand.Next(4) < 2) bs.Write(*(short*)lp); rand.NextBytes(data); while (rand.Next(4) < 2) bs.Write(*(int*)lp); rand.NextBytes(data); while (rand.Next(4) < 2) bs.Write(*(long*)lp); rand.NextBytes(data); while (rand.Next(4) < 2) bs.Write(*(ushort*)lp); rand.NextBytes(data); while (rand.Next(4) < 2) bs.Write(*(uint*)lp); rand.NextBytes(data); while (rand.Next(4) < 2) bs.Write(*(ulong*)lp); rand.NextBytes(data); while (rand.Next(4) < 2) bs.Write(NextDecimal(data, rand)); rand.NextBytes(data); while (rand.Next(4) < 2) bs.Write(*(Guid*)lp); rand.NextBytes(data); while (rand.Next(4) < 2) bs.Write(NextDate(data, rand)); rand.NextBytes(data); while (rand.Next(4) < 2) bs.Write(NextSingle(data, rand)); rand.NextBytes(data); while (rand.Next(4) < 2) bs.Write(NextDouble(data, rand)); rand.NextBytes(data); bool value = (*lp != 0); while (rand.Next(4) < 2) bs.Write(value); rand.NextBytes(data); while (rand.Next(4) < 2) bs.Write7Bit(*(uint*)lp); data[3] = 0; while (rand.Next(4) < 2) bs.Write7Bit(*(uint*)lp); data[2] = 0; while (rand.Next(4) < 2) bs.Write7Bit(*(uint*)lp); data[1] = 0; while (rand.Next(4) < 2) bs.Write7Bit(*(uint*)lp); rand.NextBytes(data); while (rand.Next(4) < 2) bs.Write7Bit(*(ulong*)lp); data[7] = 0; while (rand.Next(4) < 2) bs.Write7Bit(*(ulong*)lp); data[6] = 0; while (rand.Next(4) < 2) bs.Write7Bit(*(ulong*)lp); data[5] = 0; while (rand.Next(4) < 2) bs.Write7Bit(*(ulong*)lp); data[4] = 0; while (rand.Next(4) < 2) bs.Write7Bit(*(ulong*)lp); data[3] = 0; while (rand.Next(4) < 2) bs.Write7Bit(*(ulong*)lp); data[2] = 0; while (rand.Next(4) < 2) bs.Write7Bit(*(ulong*)lp); data[1] = 0; while (rand.Next(4) < 2) bs.Write7Bit(*(ulong*)lp); rand.NextBytes(data); bs.Write(data, 0, data.Length); while (rand.Next(4) < 2) { if (bs.Position > 100) { bs.Position -= 100; int insertCount = rand.Next(16) + 1; bs.InsertBytes(insertCount, 100); bs.Write(data, 0, insertCount); bs.Position -= insertCount; bs.ReadAll(data2, 0, insertCount); bs.Position -= insertCount; bs.RemoveBytes(insertCount, 100); bs.Position += 100; for (int y = 0; y < insertCount; y++) { if (data[y] != data2[y]) throw new Exception(); } } } } rand = new Random(seed); bs.Position = 0; for (int x = 0; x < 10000; x++) { rand.NextBytes(data); while (rand.Next(4) < 2) if (bs.ReadUInt8() != (*(byte*)lp)) throw new Exception(); int skip = rand.Next(40) + 1; bs.Position += skip; bs.Position -= rand.Next(skip); rand.NextBytes(data); while (rand.Next(4) < 2) if (bs.ReadInt8() != (*(sbyte*)lp)) throw new Exception(); rand.NextBytes(data); while (rand.Next(4) < 2) if (bs.ReadInt16() != (*(short*)lp)) throw new Exception(); rand.NextBytes(data); while (rand.Next(4) < 2) if (bs.ReadInt32() != (*(int*)lp)) throw new Exception(); rand.NextBytes(data); while (rand.Next(4) < 2) if (bs.ReadInt64() != (*(long*)lp)) throw new Exception(); rand.NextBytes(data); while (rand.Next(4) < 2) if (bs.ReadUInt16() != (*(ushort*)lp)) throw new Exception(); rand.NextBytes(data); while (rand.Next(4) < 2) if (bs.ReadUInt32() != (*(uint*)lp)) throw new Exception(); rand.NextBytes(data); while (rand.Next(4) < 2) if (bs.ReadUInt64() != (*(ulong*)lp)) throw new Exception(); rand.NextBytes(data); while (rand.Next(4) < 2) if (bs.ReadDecimal() != NextDecimal(data, rand)) throw new Exception(); rand.NextBytes(data); while (rand.Next(4) < 2) if (bs.ReadGuid() != (*(Guid*)lp)) throw new Exception(); rand.NextBytes(data); while (rand.Next(4) < 2) if (bs.ReadDateTime() != NextDate(data, rand)) throw new Exception(); rand.NextBytes(data); while (rand.Next(4) < 2) if (bs.ReadSingle() != NextSingle(data, rand)) throw new Exception(); rand.NextBytes(data); while (rand.Next(4) < 2) if (bs.ReadDouble() != NextDouble(data, rand)) throw new Exception(); rand.NextBytes(data); bool b2 = (*lp != 0); while (rand.Next(4) < 2) if (bs.ReadBoolean() != b2) throw new Exception(); rand.NextBytes(data); while (rand.Next(4) < 2) if (bs.Read7BitUInt32() != (*(uint*)lp)) throw new Exception(); data[3] = 0; while (rand.Next(4) < 2) if (bs.Read7BitUInt32() != (*(uint*)lp)) throw new Exception(); data[2] = 0; while (rand.Next(4) < 2) if (bs.Read7BitUInt32() != (*(uint*)lp)) throw new Exception(); data[1] = 0; while (rand.Next(4) < 2) if (bs.Read7BitUInt32() != (*(uint*)lp)) throw new Exception(); rand.NextBytes(data); while (rand.Next(4) < 2) if (bs.Read7BitUInt64() != (*(ulong*)lp)) throw new Exception(); data[7] = 0; while (rand.Next(4) < 2) if (bs.Read7BitUInt64() != (*(ulong*)lp)) throw new Exception(); data[6] = 0; while (rand.Next(4) < 2) if (bs.Read7BitUInt64() != (*(ulong*)lp)) throw new Exception(); data[5] = 0; while (rand.Next(4) < 2) if (bs.Read7BitUInt64() != (*(ulong*)lp)) throw new Exception(); data[4] = 0; while (rand.Next(4) < 2) if (bs.Read7BitUInt64() != (*(ulong*)lp)) throw new Exception(); data[3] = 0; while (rand.Next(4) < 2) if (bs.Read7BitUInt64() != (*(ulong*)lp)) throw new Exception(); data[2] = 0; while (rand.Next(4) < 2) if (bs.Read7BitUInt64() != (*(ulong*)lp)) throw new Exception(); data[1] = 0; while (rand.Next(4) < 2) if (bs.Read7BitUInt64() != (*(ulong*)lp)) throw new Exception(); rand.NextBytes(data); bs.ReadAll(data2, 0, 16); if (!data2.SequenceEqual<byte>(data)) throw new Exception(); while (rand.Next(4) < 2) { if (bs.Position > 100) { int insertCount = rand.Next(16); } } } } }
public void Test() { MemoryPoolTest.TestMemoryLeak(); const int count = 1000; MemoryStream ms = new MemoryStream(); ms.Write(new byte[100000], 0, 100000); ms.Write(new byte[100000], 0, 100000); ms.Position = 0; BinaryStreamWrapper bs = new BinaryStreamWrapper(ms, false); Stopwatch sw = new Stopwatch(); //DateTime b = DateTime.UtcNow; long b = 10; //Guid b = Guid.NewGuid() ; for (int x2 = 0; x2 < count; x2++) { bs.Position = 0; for (int x = 0; x < count; x++) { bs.Write(b); bs.Write(b); bs.Write(b); bs.Write(b); bs.Write(b); bs.Write(b); bs.Write(b); bs.Write(b); bs.Write(b); bs.Write(b); } } sw.Start(); for (int x2 = 0; x2 < count; x2++) { bs.Position = 0; for (int x = 0; x < count; x++) { bs.Write(b); bs.Write(b); bs.Write(b); bs.Write(b); bs.Write(b); bs.Write(b); bs.Write(b); bs.Write(b); bs.Write(b); bs.Write(b); //bs.ReadDecimal(); //bs.ReadDecimal(); //bs.ReadDecimal(); //bs.ReadDecimal(); //bs.ReadDecimal(); //bs.ReadDecimal(); //bs.ReadDecimal(); //bs.ReadDecimal(); //bs.ReadDecimal(); //bs.ReadDecimal(); //bs.ReadInt64(); //bs.ReadInt64(); //bs.ReadInt64(); //bs.ReadInt64(); //bs.ReadInt64(); //bs.ReadInt64(); //bs.ReadInt64(); //bs.ReadInt64(); //bs.ReadInt64(); //bs.ReadInt64(); //bs.ReadInt32(); //bs.ReadInt32(); //bs.ReadInt32(); //bs.ReadInt32(); //bs.ReadInt32(); //bs.ReadInt32(); //bs.ReadInt32(); //bs.ReadInt32(); //bs.ReadInt32(); //bs.ReadInt32(); //bs.ReadInt16(); //bs.ReadInt16(); //bs.ReadInt16(); //bs.ReadInt16(); //bs.ReadInt16(); //bs.ReadInt16(); //bs.ReadInt16(); //bs.ReadInt16(); //bs.ReadInt16(); //bs.ReadInt16(); //bs.ReadByte(); //bs.ReadByte(); //bs.ReadByte(); //bs.ReadByte(); //bs.ReadByte(); //bs.ReadByte(); //bs.ReadByte(); //bs.ReadByte(); //bs.ReadByte(); //bs.ReadByte(); //bs.Write7Bit(b); //bs.Write7Bit(b); //bs.Write7Bit(b); //bs.Write7Bit(b); //bs.Write7Bit(b); //bs.Write7Bit(b); //bs.Write7Bit(b); //bs.Write7Bit(b); //bs.Write7Bit(b); //bs.Write7Bit(b); } } sw.Stop(); Assert.IsTrue(true); ms.Dispose(); MemoryPoolTest.TestMemoryLeak(); //MessageBox.Show((count * count * 10 / sw.Elapsed.TotalSeconds / 1000000).ToString()); }