diff --git a/libsecondlife/Types.cs b/libsecondlife/Types.cs
index 43299c38..c7ed42b0 100644
--- a/libsecondlife/Types.cs
+++ b/libsecondlife/Types.cs
@@ -79,12 +79,8 @@ namespace libsecondlife
/// Beginning offset in the array
public LLUUID(byte[] source, int pos)
{
- UUID = new Guid(
- (source[pos + 0] << 24) | (source[pos + 1] << 16) | (source[pos + 2] << 8) | source[pos + 3],
- (short)((source[pos + 4] << 8) | source[pos + 5]),
- (short)((source[pos + 6] << 8) | source[pos + 7]),
- source[pos + 8], source[pos + 9], source[pos + 10], source[pos + 11],
- source[pos + 12], source[pos + 13], source[pos + 14], source[pos + 15]);
+ UUID = LLUUID.Zero.UUID;
+ FromBytes(source, pos);
}
///
@@ -101,6 +97,21 @@ namespace libsecondlife
#region Public Methods
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void FromBytes(byte[] source, int pos)
+ {
+ UUID = new Guid(
+ (source[pos + 0] << 24) | (source[pos + 1] << 16) | (source[pos + 2] << 8) | source[pos + 3],
+ (short)((source[pos + 4] << 8) | source[pos + 5]),
+ (short)((source[pos + 6] << 8) | source[pos + 7]),
+ source[pos + 8], source[pos + 9], source[pos + 10], source[pos + 11],
+ source[pos + 12], source[pos + 13], source[pos + 14], source[pos + 15]);
+ }
+
///
/// IComparable.CompareTo implementation.
///
@@ -499,6 +510,9 @@ namespace libsecondlife
/// Z value
public float Z;
+ // Used for little to big endian conversion on big endian architectures
+ private byte[] conversionBuffer;
+
#region Constructors
///
@@ -507,6 +521,7 @@ namespace libsecondlife
/// Single-precision vector to copy
public LLVector3(LLVector3 vector)
{
+ conversionBuffer = null;
X = vector.X;
Y = vector.Y;
Z = vector.Z;
@@ -519,6 +534,7 @@ namespace libsecondlife
/// A double-precision vector
public LLVector3(LLVector3d vector)
{
+ conversionBuffer = null;
X = (float)vector.X;
Y = (float)vector.Y;
Z = (float)vector.Z;
@@ -531,26 +547,10 @@ namespace libsecondlife
/// Beginning position in the byte array
public LLVector3(byte[] byteArray, int pos)
{
- if (!BitConverter.IsLittleEndian)
- {
- byte[] newArray = new byte[12];
- Buffer.BlockCopy(byteArray, pos, newArray, 0, 12);
-
- Array.Reverse(newArray, 0, 4);
- Array.Reverse(newArray, 4, 4);
- Array.Reverse(newArray, 8, 4);
-
- X = BitConverter.ToSingle(newArray, 0);
- Y = BitConverter.ToSingle(newArray, 4);
- Z = BitConverter.ToSingle(newArray, 8);
- }
- else
- {
- X = BitConverter.ToSingle(byteArray, pos);
- Y = BitConverter.ToSingle(byteArray, pos + 4);
- Z = BitConverter.ToSingle(byteArray, pos + 8);
- }
- }
+ conversionBuffer = null;
+ X = Y = Z = 0;
+ FromBytes(byteArray, pos);
+ }
///
/// Constructor, builds a vector for individual float values
@@ -560,6 +560,7 @@ namespace libsecondlife
/// Z value
public LLVector3(float x, float y, float z)
{
+ conversionBuffer = null;
X = x;
Y = y;
Z = z;
@@ -569,6 +570,38 @@ namespace libsecondlife
#region Public Methods
+ ///
+ /// Builds a vector from a byte array
+ ///
+ /// Byte array containing a 12 byte vector
+ /// Beginning position in the byte array
+ public void FromBytes(byte[] byteArray, int pos)
+ {
+ if (!BitConverter.IsLittleEndian)
+ {
+ // Big endian architecture
+ if (conversionBuffer == null)
+ conversionBuffer = new byte[12];
+
+ Buffer.BlockCopy(byteArray, pos, conversionBuffer, 0, 12);
+
+ Array.Reverse(conversionBuffer, 0, 4);
+ Array.Reverse(conversionBuffer, 4, 4);
+ Array.Reverse(conversionBuffer, 8, 4);
+
+ X = BitConverter.ToSingle(conversionBuffer, 0);
+ Y = BitConverter.ToSingle(conversionBuffer, 4);
+ Z = BitConverter.ToSingle(conversionBuffer, 8);
+ }
+ else
+ {
+ // Little endian architecture
+ X = BitConverter.ToSingle(byteArray, pos);
+ Y = BitConverter.ToSingle(byteArray, pos + 4);
+ Z = BitConverter.ToSingle(byteArray, pos + 8);
+ }
+ }
+
///
/// Test if this vector is composed of all finite numbers
///
@@ -884,6 +917,9 @@ namespace libsecondlife
/// Z value
public double Z;
+ // Used for little to big endian conversion on big endian architectures
+ private byte[] conversionBuffer;
+
#region Constructors
///
@@ -894,6 +930,7 @@ namespace libsecondlife
///
public LLVector3d(double x, double y, double z)
{
+ conversionBuffer = null;
X = x;
Y = y;
Z = z;
@@ -905,6 +942,7 @@ namespace libsecondlife
///
public LLVector3d(LLVector3 llv3)
{
+ conversionBuffer = null;
X = llv3.X;
Y = llv3.Y;
Z = llv3.Z;
@@ -917,31 +955,47 @@ namespace libsecondlife
///
public LLVector3d(byte[] byteArray, int pos)
{
- if (!BitConverter.IsLittleEndian)
- {
- byte[] newArray = new byte[24];
- Buffer.BlockCopy(byteArray, pos, newArray, 0, 24);
-
- Array.Reverse(newArray, 0, 8);
- Array.Reverse(newArray, 8, 8);
- Array.Reverse(newArray, 16, 8);
-
- X = BitConverter.ToDouble(newArray, 0);
- Y = BitConverter.ToDouble(newArray, 8);
- Z = BitConverter.ToDouble(newArray, 16);
- }
- else
- {
- X = BitConverter.ToDouble(byteArray, pos);
- Y = BitConverter.ToDouble(byteArray, pos + 8);
- Z = BitConverter.ToDouble(byteArray, pos + 16);
- }
+ conversionBuffer = null;
+ X = Y = Z = 0;
+ FromBytes(byteArray, pos);
}
#endregion Constructors
#region Public Methods
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void FromBytes(byte[] byteArray, int pos)
+ {
+ if (!BitConverter.IsLittleEndian)
+ {
+ // Big endian architecture
+ if (conversionBuffer == null)
+ conversionBuffer = new byte[24];
+
+ Buffer.BlockCopy(byteArray, pos, conversionBuffer, 0, 24);
+
+ Array.Reverse(conversionBuffer, 0, 8);
+ Array.Reverse(conversionBuffer, 8, 8);
+ Array.Reverse(conversionBuffer, 16, 8);
+
+ X = BitConverter.ToDouble(conversionBuffer, 0);
+ Y = BitConverter.ToDouble(conversionBuffer, 8);
+ Z = BitConverter.ToDouble(conversionBuffer, 16);
+ }
+ else
+ {
+ // Little endian architecture
+ X = BitConverter.ToDouble(byteArray, pos);
+ Y = BitConverter.ToDouble(byteArray, pos + 8);
+ Z = BitConverter.ToDouble(byteArray, pos + 16);
+ }
+ }
+
///
///
///
@@ -1085,6 +1139,9 @@ namespace libsecondlife
///
public float S;
+ // Used for little to big endian conversion on big endian architectures
+ private byte[] conversionBuffer;
+
#region Constructors
///
@@ -1096,6 +1153,7 @@ namespace libsecondlife
/// S value
public LLVector4(float x, float y, float z, float s)
{
+ conversionBuffer = null;
X = x;
Y = y;
Z = z;
@@ -1109,23 +1167,43 @@ namespace libsecondlife
///
public LLVector4(byte[] byteArray, int pos)
{
+ conversionBuffer = null;
+ X = Y = Z = S = 0;
+ FromBytes(byteArray, pos);
+ }
+
+ #endregion Constructors
+
+ #region Public Methods
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void FromBytes(byte[] byteArray, int pos)
+ {
if (!BitConverter.IsLittleEndian)
{
- byte[] newArray = new byte[16];
- Buffer.BlockCopy(byteArray, pos, newArray, 0, 16);
+ // Big endian architecture
+ if (conversionBuffer == null)
+ conversionBuffer = new byte[16];
- Array.Reverse(newArray, 0, 4);
- Array.Reverse(newArray, 4, 4);
- Array.Reverse(newArray, 8, 4);
- Array.Reverse(newArray, 12, 4);
+ Buffer.BlockCopy(byteArray, pos, conversionBuffer, 0, 16);
- X = BitConverter.ToSingle(newArray, 0);
- Y = BitConverter.ToSingle(newArray, 4);
- Z = BitConverter.ToSingle(newArray, 8);
- S = BitConverter.ToSingle(newArray, 12);
+ Array.Reverse(conversionBuffer, 0, 4);
+ Array.Reverse(conversionBuffer, 4, 4);
+ Array.Reverse(conversionBuffer, 8, 4);
+ Array.Reverse(conversionBuffer, 12, 4);
+
+ X = BitConverter.ToSingle(conversionBuffer, 0);
+ Y = BitConverter.ToSingle(conversionBuffer, 4);
+ Z = BitConverter.ToSingle(conversionBuffer, 8);
+ S = BitConverter.ToSingle(conversionBuffer, 12);
}
else
{
+ // Little endian architecture
X = BitConverter.ToSingle(byteArray, pos);
Y = BitConverter.ToSingle(byteArray, pos + 4);
Z = BitConverter.ToSingle(byteArray, pos + 8);
@@ -1133,10 +1211,6 @@ namespace libsecondlife
}
}
- #endregion Constructors
-
- #region Public Methods
-
///
///
///
@@ -1532,10 +1606,13 @@ namespace libsecondlife
/// W value
public float W;
+ // Used for little to big endian conversion on big endian architectures
+ private byte[] conversionBuffer;
+
#region Constructors
///
- /// Build a quaternion object from a byte array
+ /// Constructor, builds a quaternion object from a byte array
///
/// The source byte array
/// Offset in the byte array to start reading at
@@ -1544,56 +1621,9 @@ namespace libsecondlife
/// be read.
public LLQuaternion(byte[] byteArray, int pos, bool normalized)
{
- if (!normalized)
- {
- if (!BitConverter.IsLittleEndian)
- {
- byte[] newArray = new byte[16];
- Buffer.BlockCopy(byteArray, pos, newArray, 0, 16);
-
- Array.Reverse(newArray, 0, 4);
- Array.Reverse(newArray, 4, 4);
- Array.Reverse(newArray, 8, 4);
- Array.Reverse(newArray, 12, 4);
-
- X = BitConverter.ToSingle(newArray, 0);
- Y = BitConverter.ToSingle(newArray, 4);
- Z = BitConverter.ToSingle(newArray, 8);
- W = BitConverter.ToSingle(newArray, 12);
- }
- else
- {
- X = BitConverter.ToSingle(byteArray, pos);
- Y = BitConverter.ToSingle(byteArray, pos + 4);
- Z = BitConverter.ToSingle(byteArray, pos + 8);
- W = BitConverter.ToSingle(byteArray, pos + 12);
- }
- }
- else
- {
- if (!BitConverter.IsLittleEndian)
- {
- byte[] newArray = new byte[12];
- Buffer.BlockCopy(byteArray, pos, newArray, 0, 12);
-
- Array.Reverse(newArray, 0, 4);
- Array.Reverse(newArray, 4, 4);
- Array.Reverse(newArray, 8, 4);
-
- X = BitConverter.ToSingle(newArray, 0);
- Y = BitConverter.ToSingle(newArray, 4);
- Z = BitConverter.ToSingle(newArray, 8);
- }
- else
- {
- X = BitConverter.ToSingle(byteArray, pos);
- Y = BitConverter.ToSingle(byteArray, pos + 4);
- Z = BitConverter.ToSingle(byteArray, pos + 8);
- }
-
- float xyzsum = 1 - X * X - Y * Y - Z * Z;
- W = (xyzsum > 0) ? (float)Math.Sqrt(xyzsum) : 0;
- }
+ conversionBuffer = null;
+ X = Y = Z = W = 0;
+ FromBytes(byteArray, pos, normalized);
}
///
@@ -1604,6 +1634,7 @@ namespace libsecondlife
/// Z value from -1.0 to 1.0
public LLQuaternion(float x, float y, float z)
{
+ conversionBuffer = null;
X = x;
Y = y;
Z = z;
@@ -1621,6 +1652,7 @@ namespace libsecondlife
/// W value
public LLQuaternion(float x, float y, float z, float w)
{
+ conversionBuffer = null;
X = x;
Y = y;
Z = z;
@@ -1634,6 +1666,8 @@ namespace libsecondlife
/// Vector value
public LLQuaternion(float angle, LLVector3 vector)
{
+ conversionBuffer = null;
+
vector = LLVector3.Norm(vector);
angle *= 0.5f;
@@ -1652,6 +1686,76 @@ namespace libsecondlife
#region Public Methods
+ ///
+ /// Builds a quaternion object from a byte array
+ ///
+ /// The source byte array
+ /// Offset in the byte array to start reading at
+ /// Whether the source data is normalized or
+ /// not. If this is true 12 bytes will be read, otherwise 16 bytes will
+ /// be read.
+ public void FromBytes(byte[] byteArray, int pos, bool normalized)
+ {
+ if (!normalized)
+ {
+ if (!BitConverter.IsLittleEndian)
+ {
+ // Big endian architecture
+ if (conversionBuffer == null)
+ conversionBuffer = new byte[16];
+
+ Buffer.BlockCopy(byteArray, pos, conversionBuffer, 0, 16);
+
+ Array.Reverse(conversionBuffer, 0, 4);
+ Array.Reverse(conversionBuffer, 4, 4);
+ Array.Reverse(conversionBuffer, 8, 4);
+ Array.Reverse(conversionBuffer, 12, 4);
+
+ X = BitConverter.ToSingle(conversionBuffer, 0);
+ Y = BitConverter.ToSingle(conversionBuffer, 4);
+ Z = BitConverter.ToSingle(conversionBuffer, 8);
+ W = BitConverter.ToSingle(conversionBuffer, 12);
+ }
+ else
+ {
+ // Little endian architecture
+ X = BitConverter.ToSingle(byteArray, pos);
+ Y = BitConverter.ToSingle(byteArray, pos + 4);
+ Z = BitConverter.ToSingle(byteArray, pos + 8);
+ W = BitConverter.ToSingle(byteArray, pos + 12);
+ }
+ }
+ else
+ {
+ if (!BitConverter.IsLittleEndian)
+ {
+ // Big endian architecture
+ if (conversionBuffer == null)
+ conversionBuffer = new byte[16];
+
+ Buffer.BlockCopy(byteArray, pos, conversionBuffer, 0, 12);
+
+ Array.Reverse(conversionBuffer, 0, 4);
+ Array.Reverse(conversionBuffer, 4, 4);
+ Array.Reverse(conversionBuffer, 8, 4);
+
+ X = BitConverter.ToSingle(conversionBuffer, 0);
+ Y = BitConverter.ToSingle(conversionBuffer, 4);
+ Z = BitConverter.ToSingle(conversionBuffer, 8);
+ }
+ else
+ {
+ // Little endian architecture
+ X = BitConverter.ToSingle(byteArray, pos);
+ Y = BitConverter.ToSingle(byteArray, pos + 4);
+ Z = BitConverter.ToSingle(byteArray, pos + 8);
+ }
+
+ float xyzsum = 1 - X * X - Y * Y - Z * Z;
+ W = (xyzsum > 0) ? (float)Math.Sqrt(xyzsum) : 0;
+ }
+ }
+
///
/// Normalize this quaternion and serialize it to a byte array
///
diff --git a/libsecondlife/_Packets_.cs b/libsecondlife/_Packets_.cs
index ca61211f..78490817 100644
--- a/libsecondlife/_Packets_.cs
+++ b/libsecondlife/_Packets_.cs
@@ -113,6 +113,8 @@ namespace libsecondlife.Packets
/// Array containing all the appended ACKs of this packet
public uint[] AckList;
+ public abstract void FromBytes(byte[] bytes, ref int pos, ref int packetEnd);
+
///
/// Convert the AckList to a byte array, used for packet serializing
///
@@ -226,6 +228,11 @@ namespace libsecondlife.Packets
///
///
public LowHeader(byte[] bytes, ref int pos, ref int packetEnd)
+ {
+ FromBytes(bytes, ref pos, ref packetEnd);
+ }
+
+ override public void FromBytes(byte[] bytes, ref int pos, ref int packetEnd)
{
if (bytes.Length < 10) { throw new MalformedDataException(); }
Data = new byte[10];
@@ -290,6 +297,11 @@ namespace libsecondlife.Packets
///
///
public MediumHeader(byte[] bytes, ref int pos, ref int packetEnd)
+ {
+ FromBytes(bytes, ref pos, ref packetEnd);
+ }
+
+ override public void FromBytes(byte[] bytes, ref int pos, ref int packetEnd)
{
if (bytes.Length < 8) { throw new MalformedDataException(); }
Data = new byte[8];
@@ -340,6 +352,11 @@ namespace libsecondlife.Packets
///
///
public HighHeader(byte[] bytes, ref int pos, ref int packetEnd)
+ {
+ FromBytes(bytes, ref pos, ref packetEnd);
+ }
+
+ override public void FromBytes(byte[] bytes, ref int pos, ref int packetEnd)
{
if (bytes.Length < 7) { throw new MalformedDataException(); }
Data = new byte[7];
@@ -760,7 +777,9 @@ namespace libsecondlife.Packets
{
public abstract Header Header { get; set; }
public abstract PacketType Type { get; }
- internal int TickCount;
+ public abstract void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer);
+ public abstract void FromBytes(Header header, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer);
+ public int TickCount;
public abstract byte[] ToBytes();
public static PacketType GetType(ushort id, PacketFrequency frequency)
@@ -1177,6 +1196,431 @@ namespace libsecondlife.Packets
return PacketType.Default;
}
+ public static PacketType GetType(byte[] bytes, int packetEnd, byte[] zeroBuffer)
+ {
+ ushort id; PacketFrequency freq;
+ int i = 0, end = packetEnd;
+ Header header = Header.BuildHeader(bytes, ref i, ref end);
+ if (header.Zerocoded)
+ {
+ end = Helpers.ZeroDecode(bytes, end + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+
+ if (bytes[6] == 0xFF)
+ {
+ if (bytes[7] == 0xFF)
+ {
+ id = (ushort)((bytes[8] << 8) + bytes[9]); freq = PacketFrequency.Low;
+ }
+ else
+ {
+ id = (ushort)bytes[7]; freq = PacketFrequency.Medium;
+ }
+ }
+ else
+ {
+ id = (ushort)bytes[6]; freq = PacketFrequency.High;
+ }
+ return GetType(id, freq);
+ }
+
+ public static Packet BuildPacket(PacketType type)
+ {
+ if(type == PacketType.StartPingCheck) return new StartPingCheckPacket();
+ if(type == PacketType.CompletePingCheck) return new CompletePingCheckPacket();
+ if(type == PacketType.AgentUpdate) return new AgentUpdatePacket();
+ if(type == PacketType.AgentAnimation) return new AgentAnimationPacket();
+ if(type == PacketType.AgentRequestSit) return new AgentRequestSitPacket();
+ if(type == PacketType.AgentSit) return new AgentSitPacket();
+ if(type == PacketType.RequestImage) return new RequestImagePacket();
+ if(type == PacketType.ImageData) return new ImageDataPacket();
+ if(type == PacketType.ImagePacket) return new ImagePacketPacket();
+ if(type == PacketType.LayerData) return new LayerDataPacket();
+ if(type == PacketType.ObjectUpdate) return new ObjectUpdatePacket();
+ if(type == PacketType.ObjectUpdateCompressed) return new ObjectUpdateCompressedPacket();
+ if(type == PacketType.ObjectUpdateCached) return new ObjectUpdateCachedPacket();
+ if(type == PacketType.ImprovedTerseObjectUpdate) return new ImprovedTerseObjectUpdatePacket();
+ if(type == PacketType.KillObject) return new KillObjectPacket();
+ if(type == PacketType.TransferPacket) return new TransferPacketPacket();
+ if(type == PacketType.SendXferPacket) return new SendXferPacketPacket();
+ if(type == PacketType.ConfirmXferPacket) return new ConfirmXferPacketPacket();
+ if(type == PacketType.AvatarAnimation) return new AvatarAnimationPacket();
+ if(type == PacketType.AvatarSitResponse) return new AvatarSitResponsePacket();
+ if(type == PacketType.CameraConstraint) return new CameraConstraintPacket();
+ if(type == PacketType.ParcelProperties) return new ParcelPropertiesPacket();
+ if(type == PacketType.ChildAgentUpdate) return new ChildAgentUpdatePacket();
+ if(type == PacketType.ChildAgentAlive) return new ChildAgentAlivePacket();
+ if(type == PacketType.ChildAgentPositionUpdate) return new ChildAgentPositionUpdatePacket();
+ if(type == PacketType.SoundTrigger) return new SoundTriggerPacket();
+ if(type == PacketType.ObjectAdd) return new ObjectAddPacket();
+ if(type == PacketType.MultipleObjectUpdate) return new MultipleObjectUpdatePacket();
+ if(type == PacketType.RequestMultipleObjects) return new RequestMultipleObjectsPacket();
+ if(type == PacketType.ObjectPosition) return new ObjectPositionPacket();
+ if(type == PacketType.RequestObjectPropertiesFamily) return new RequestObjectPropertiesFamilyPacket();
+ if(type == PacketType.CoarseLocationUpdate) return new CoarseLocationUpdatePacket();
+ if(type == PacketType.CrossedRegion) return new CrossedRegionPacket();
+ if(type == PacketType.ConfirmEnableSimulator) return new ConfirmEnableSimulatorPacket();
+ if(type == PacketType.ObjectProperties) return new ObjectPropertiesPacket();
+ if(type == PacketType.ObjectPropertiesFamily) return new ObjectPropertiesFamilyPacket();
+ if(type == PacketType.ParcelPropertiesRequest) return new ParcelPropertiesRequestPacket();
+ if(type == PacketType.AttachedSound) return new AttachedSoundPacket();
+ if(type == PacketType.AttachedSoundGainChange) return new AttachedSoundGainChangePacket();
+ if(type == PacketType.PreloadSound) return new PreloadSoundPacket();
+ if(type == PacketType.ViewerEffect) return new ViewerEffectPacket();
+ if(type == PacketType.TestMessage) return new TestMessagePacket();
+ if(type == PacketType.UseCircuitCode) return new UseCircuitCodePacket();
+ if(type == PacketType.TelehubInfo) return new TelehubInfoPacket();
+ if(type == PacketType.EconomyDataRequest) return new EconomyDataRequestPacket();
+ if(type == PacketType.EconomyData) return new EconomyDataPacket();
+ if(type == PacketType.AvatarPickerRequest) return new AvatarPickerRequestPacket();
+ if(type == PacketType.AvatarPickerReply) return new AvatarPickerReplyPacket();
+ if(type == PacketType.PlacesQuery) return new PlacesQueryPacket();
+ if(type == PacketType.PlacesReply) return new PlacesReplyPacket();
+ if(type == PacketType.DirFindQuery) return new DirFindQueryPacket();
+ if(type == PacketType.DirPlacesQuery) return new DirPlacesQueryPacket();
+ if(type == PacketType.DirPlacesReply) return new DirPlacesReplyPacket();
+ if(type == PacketType.DirPeopleReply) return new DirPeopleReplyPacket();
+ if(type == PacketType.DirEventsReply) return new DirEventsReplyPacket();
+ if(type == PacketType.DirGroupsReply) return new DirGroupsReplyPacket();
+ if(type == PacketType.DirClassifiedQuery) return new DirClassifiedQueryPacket();
+ if(type == PacketType.DirClassifiedReply) return new DirClassifiedReplyPacket();
+ if(type == PacketType.AvatarClassifiedReply) return new AvatarClassifiedReplyPacket();
+ if(type == PacketType.ClassifiedInfoRequest) return new ClassifiedInfoRequestPacket();
+ if(type == PacketType.ClassifiedInfoReply) return new ClassifiedInfoReplyPacket();
+ if(type == PacketType.ClassifiedInfoUpdate) return new ClassifiedInfoUpdatePacket();
+ if(type == PacketType.ClassifiedDelete) return new ClassifiedDeletePacket();
+ if(type == PacketType.ClassifiedGodDelete) return new ClassifiedGodDeletePacket();
+ if(type == PacketType.DirLandQuery) return new DirLandQueryPacket();
+ if(type == PacketType.DirLandReply) return new DirLandReplyPacket();
+ if(type == PacketType.DirPopularQuery) return new DirPopularQueryPacket();
+ if(type == PacketType.DirPopularReply) return new DirPopularReplyPacket();
+ if(type == PacketType.ParcelInfoRequest) return new ParcelInfoRequestPacket();
+ if(type == PacketType.ParcelInfoReply) return new ParcelInfoReplyPacket();
+ if(type == PacketType.ParcelObjectOwnersRequest) return new ParcelObjectOwnersRequestPacket();
+ if(type == PacketType.ParcelObjectOwnersReply) return new ParcelObjectOwnersReplyPacket();
+ if(type == PacketType.GroupNoticesListRequest) return new GroupNoticesListRequestPacket();
+ if(type == PacketType.GroupNoticesListReply) return new GroupNoticesListReplyPacket();
+ if(type == PacketType.GroupNoticeRequest) return new GroupNoticeRequestPacket();
+ if(type == PacketType.TeleportRequest) return new TeleportRequestPacket();
+ if(type == PacketType.TeleportLocationRequest) return new TeleportLocationRequestPacket();
+ if(type == PacketType.TeleportLocal) return new TeleportLocalPacket();
+ if(type == PacketType.TeleportLandmarkRequest) return new TeleportLandmarkRequestPacket();
+ if(type == PacketType.TeleportProgress) return new TeleportProgressPacket();
+ if(type == PacketType.TeleportFinish) return new TeleportFinishPacket();
+ if(type == PacketType.StartLure) return new StartLurePacket();
+ if(type == PacketType.TeleportLureRequest) return new TeleportLureRequestPacket();
+ if(type == PacketType.TeleportCancel) return new TeleportCancelPacket();
+ if(type == PacketType.TeleportStart) return new TeleportStartPacket();
+ if(type == PacketType.TeleportFailed) return new TeleportFailedPacket();
+ if(type == PacketType.Undo) return new UndoPacket();
+ if(type == PacketType.Redo) return new RedoPacket();
+ if(type == PacketType.UndoLand) return new UndoLandPacket();
+ if(type == PacketType.AgentPause) return new AgentPausePacket();
+ if(type == PacketType.AgentResume) return new AgentResumePacket();
+ if(type == PacketType.ChatFromViewer) return new ChatFromViewerPacket();
+ if(type == PacketType.AgentThrottle) return new AgentThrottlePacket();
+ if(type == PacketType.AgentFOV) return new AgentFOVPacket();
+ if(type == PacketType.AgentHeightWidth) return new AgentHeightWidthPacket();
+ if(type == PacketType.AgentSetAppearance) return new AgentSetAppearancePacket();
+ if(type == PacketType.AgentQuitCopy) return new AgentQuitCopyPacket();
+ if(type == PacketType.ImageNotInDatabase) return new ImageNotInDatabasePacket();
+ if(type == PacketType.RebakeAvatarTextures) return new RebakeAvatarTexturesPacket();
+ if(type == PacketType.SetAlwaysRun) return new SetAlwaysRunPacket();
+ if(type == PacketType.ObjectDelete) return new ObjectDeletePacket();
+ if(type == PacketType.ObjectDuplicate) return new ObjectDuplicatePacket();
+ if(type == PacketType.ObjectDuplicateOnRay) return new ObjectDuplicateOnRayPacket();
+ if(type == PacketType.ObjectScale) return new ObjectScalePacket();
+ if(type == PacketType.ObjectRotation) return new ObjectRotationPacket();
+ if(type == PacketType.ObjectFlagUpdate) return new ObjectFlagUpdatePacket();
+ if(type == PacketType.ObjectClickAction) return new ObjectClickActionPacket();
+ if(type == PacketType.ObjectImage) return new ObjectImagePacket();
+ if(type == PacketType.ObjectMaterial) return new ObjectMaterialPacket();
+ if(type == PacketType.ObjectShape) return new ObjectShapePacket();
+ if(type == PacketType.ObjectExtraParams) return new ObjectExtraParamsPacket();
+ if(type == PacketType.ObjectOwner) return new ObjectOwnerPacket();
+ if(type == PacketType.ObjectGroup) return new ObjectGroupPacket();
+ if(type == PacketType.ObjectBuy) return new ObjectBuyPacket();
+ if(type == PacketType.BuyObjectInventory) return new BuyObjectInventoryPacket();
+ if(type == PacketType.DerezContainer) return new DerezContainerPacket();
+ if(type == PacketType.ObjectPermissions) return new ObjectPermissionsPacket();
+ if(type == PacketType.ObjectSaleInfo) return new ObjectSaleInfoPacket();
+ if(type == PacketType.ObjectName) return new ObjectNamePacket();
+ if(type == PacketType.ObjectDescription) return new ObjectDescriptionPacket();
+ if(type == PacketType.ObjectCategory) return new ObjectCategoryPacket();
+ if(type == PacketType.ObjectSelect) return new ObjectSelectPacket();
+ if(type == PacketType.ObjectDeselect) return new ObjectDeselectPacket();
+ if(type == PacketType.ObjectAttach) return new ObjectAttachPacket();
+ if(type == PacketType.ObjectDetach) return new ObjectDetachPacket();
+ if(type == PacketType.ObjectDrop) return new ObjectDropPacket();
+ if(type == PacketType.ObjectLink) return new ObjectLinkPacket();
+ if(type == PacketType.ObjectDelink) return new ObjectDelinkPacket();
+ if(type == PacketType.ObjectGrab) return new ObjectGrabPacket();
+ if(type == PacketType.ObjectGrabUpdate) return new ObjectGrabUpdatePacket();
+ if(type == PacketType.ObjectDeGrab) return new ObjectDeGrabPacket();
+ if(type == PacketType.ObjectSpinStart) return new ObjectSpinStartPacket();
+ if(type == PacketType.ObjectSpinUpdate) return new ObjectSpinUpdatePacket();
+ if(type == PacketType.ObjectSpinStop) return new ObjectSpinStopPacket();
+ if(type == PacketType.ObjectExportSelected) return new ObjectExportSelectedPacket();
+ if(type == PacketType.ModifyLand) return new ModifyLandPacket();
+ if(type == PacketType.VelocityInterpolateOn) return new VelocityInterpolateOnPacket();
+ if(type == PacketType.VelocityInterpolateOff) return new VelocityInterpolateOffPacket();
+ if(type == PacketType.StateSave) return new StateSavePacket();
+ if(type == PacketType.ReportAutosaveCrash) return new ReportAutosaveCrashPacket();
+ if(type == PacketType.SimWideDeletes) return new SimWideDeletesPacket();
+ if(type == PacketType.TrackAgent) return new TrackAgentPacket();
+ if(type == PacketType.ViewerStats) return new ViewerStatsPacket();
+ if(type == PacketType.ScriptAnswerYes) return new ScriptAnswerYesPacket();
+ if(type == PacketType.UserReport) return new UserReportPacket();
+ if(type == PacketType.AlertMessage) return new AlertMessagePacket();
+ if(type == PacketType.AgentAlertMessage) return new AgentAlertMessagePacket();
+ if(type == PacketType.MeanCollisionAlert) return new MeanCollisionAlertPacket();
+ if(type == PacketType.ViewerFrozenMessage) return new ViewerFrozenMessagePacket();
+ if(type == PacketType.HealthMessage) return new HealthMessagePacket();
+ if(type == PacketType.ChatFromSimulator) return new ChatFromSimulatorPacket();
+ if(type == PacketType.SimStats) return new SimStatsPacket();
+ if(type == PacketType.RequestRegionInfo) return new RequestRegionInfoPacket();
+ if(type == PacketType.RegionInfo) return new RegionInfoPacket();
+ if(type == PacketType.GodUpdateRegionInfo) return new GodUpdateRegionInfoPacket();
+ if(type == PacketType.NearestLandingRegionUpdated) return new NearestLandingRegionUpdatedPacket();
+ if(type == PacketType.RegionHandshake) return new RegionHandshakePacket();
+ if(type == PacketType.RegionHandshakeReply) return new RegionHandshakeReplyPacket();
+ if(type == PacketType.SimulatorViewerTimeMessage) return new SimulatorViewerTimeMessagePacket();
+ if(type == PacketType.EnableSimulator) return new EnableSimulatorPacket();
+ if(type == PacketType.DisableSimulator) return new DisableSimulatorPacket();
+ if(type == PacketType.TransferRequest) return new TransferRequestPacket();
+ if(type == PacketType.TransferInfo) return new TransferInfoPacket();
+ if(type == PacketType.TransferAbort) return new TransferAbortPacket();
+ if(type == PacketType.RequestXfer) return new RequestXferPacket();
+ if(type == PacketType.AbortXfer) return new AbortXferPacket();
+ if(type == PacketType.AvatarAppearance) return new AvatarAppearancePacket();
+ if(type == PacketType.SetFollowCamProperties) return new SetFollowCamPropertiesPacket();
+ if(type == PacketType.ClearFollowCamProperties) return new ClearFollowCamPropertiesPacket();
+ if(type == PacketType.RequestPayPrice) return new RequestPayPricePacket();
+ if(type == PacketType.PayPriceReply) return new PayPriceReplyPacket();
+ if(type == PacketType.KickUser) return new KickUserPacket();
+ if(type == PacketType.KickUserAck) return new KickUserAckPacket();
+ if(type == PacketType.GodKickUser) return new GodKickUserPacket();
+ if(type == PacketType.EjectUser) return new EjectUserPacket();
+ if(type == PacketType.FreezeUser) return new FreezeUserPacket();
+ if(type == PacketType.AvatarPropertiesRequest) return new AvatarPropertiesRequestPacket();
+ if(type == PacketType.AvatarPropertiesReply) return new AvatarPropertiesReplyPacket();
+ if(type == PacketType.AvatarInterestsReply) return new AvatarInterestsReplyPacket();
+ if(type == PacketType.AvatarGroupsReply) return new AvatarGroupsReplyPacket();
+ if(type == PacketType.AvatarPropertiesUpdate) return new AvatarPropertiesUpdatePacket();
+ if(type == PacketType.AvatarInterestsUpdate) return new AvatarInterestsUpdatePacket();
+ if(type == PacketType.AvatarNotesReply) return new AvatarNotesReplyPacket();
+ if(type == PacketType.AvatarNotesUpdate) return new AvatarNotesUpdatePacket();
+ if(type == PacketType.AvatarPicksReply) return new AvatarPicksReplyPacket();
+ if(type == PacketType.EventInfoRequest) return new EventInfoRequestPacket();
+ if(type == PacketType.EventInfoReply) return new EventInfoReplyPacket();
+ if(type == PacketType.EventNotificationAddRequest) return new EventNotificationAddRequestPacket();
+ if(type == PacketType.EventNotificationRemoveRequest) return new EventNotificationRemoveRequestPacket();
+ if(type == PacketType.EventGodDelete) return new EventGodDeletePacket();
+ if(type == PacketType.PickInfoReply) return new PickInfoReplyPacket();
+ if(type == PacketType.PickInfoUpdate) return new PickInfoUpdatePacket();
+ if(type == PacketType.PickDelete) return new PickDeletePacket();
+ if(type == PacketType.PickGodDelete) return new PickGodDeletePacket();
+ if(type == PacketType.ScriptQuestion) return new ScriptQuestionPacket();
+ if(type == PacketType.ScriptControlChange) return new ScriptControlChangePacket();
+ if(type == PacketType.ScriptDialog) return new ScriptDialogPacket();
+ if(type == PacketType.ScriptDialogReply) return new ScriptDialogReplyPacket();
+ if(type == PacketType.ForceScriptControlRelease) return new ForceScriptControlReleasePacket();
+ if(type == PacketType.RevokePermissions) return new RevokePermissionsPacket();
+ if(type == PacketType.LoadURL) return new LoadURLPacket();
+ if(type == PacketType.ScriptTeleportRequest) return new ScriptTeleportRequestPacket();
+ if(type == PacketType.ParcelOverlay) return new ParcelOverlayPacket();
+ if(type == PacketType.ParcelPropertiesRequestByID) return new ParcelPropertiesRequestByIDPacket();
+ if(type == PacketType.ParcelPropertiesUpdate) return new ParcelPropertiesUpdatePacket();
+ if(type == PacketType.ParcelReturnObjects) return new ParcelReturnObjectsPacket();
+ if(type == PacketType.ParcelSetOtherCleanTime) return new ParcelSetOtherCleanTimePacket();
+ if(type == PacketType.ParcelDisableObjects) return new ParcelDisableObjectsPacket();
+ if(type == PacketType.ParcelSelectObjects) return new ParcelSelectObjectsPacket();
+ if(type == PacketType.EstateCovenantRequest) return new EstateCovenantRequestPacket();
+ if(type == PacketType.EstateCovenantReply) return new EstateCovenantReplyPacket();
+ if(type == PacketType.ForceObjectSelect) return new ForceObjectSelectPacket();
+ if(type == PacketType.ParcelBuyPass) return new ParcelBuyPassPacket();
+ if(type == PacketType.ParcelDeedToGroup) return new ParcelDeedToGroupPacket();
+ if(type == PacketType.ParcelReclaim) return new ParcelReclaimPacket();
+ if(type == PacketType.ParcelClaim) return new ParcelClaimPacket();
+ if(type == PacketType.ParcelJoin) return new ParcelJoinPacket();
+ if(type == PacketType.ParcelDivide) return new ParcelDividePacket();
+ if(type == PacketType.ParcelRelease) return new ParcelReleasePacket();
+ if(type == PacketType.ParcelBuy) return new ParcelBuyPacket();
+ if(type == PacketType.ParcelGodForceOwner) return new ParcelGodForceOwnerPacket();
+ if(type == PacketType.ParcelAccessListRequest) return new ParcelAccessListRequestPacket();
+ if(type == PacketType.ParcelAccessListReply) return new ParcelAccessListReplyPacket();
+ if(type == PacketType.ParcelAccessListUpdate) return new ParcelAccessListUpdatePacket();
+ if(type == PacketType.ParcelDwellRequest) return new ParcelDwellRequestPacket();
+ if(type == PacketType.ParcelDwellReply) return new ParcelDwellReplyPacket();
+ if(type == PacketType.ParcelGodMarkAsContent) return new ParcelGodMarkAsContentPacket();
+ if(type == PacketType.ViewerStartAuction) return new ViewerStartAuctionPacket();
+ if(type == PacketType.UUIDNameRequest) return new UUIDNameRequestPacket();
+ if(type == PacketType.UUIDNameReply) return new UUIDNameReplyPacket();
+ if(type == PacketType.UUIDGroupNameRequest) return new UUIDGroupNameRequestPacket();
+ if(type == PacketType.UUIDGroupNameReply) return new UUIDGroupNameReplyPacket();
+ if(type == PacketType.ChildAgentDying) return new ChildAgentDyingPacket();
+ if(type == PacketType.ChildAgentUnknown) return new ChildAgentUnknownPacket();
+ if(type == PacketType.GetScriptRunning) return new GetScriptRunningPacket();
+ if(type == PacketType.ScriptRunningReply) return new ScriptRunningReplyPacket();
+ if(type == PacketType.SetScriptRunning) return new SetScriptRunningPacket();
+ if(type == PacketType.ScriptReset) return new ScriptResetPacket();
+ if(type == PacketType.ScriptSensorRequest) return new ScriptSensorRequestPacket();
+ if(type == PacketType.ScriptSensorReply) return new ScriptSensorReplyPacket();
+ if(type == PacketType.CompleteAgentMovement) return new CompleteAgentMovementPacket();
+ if(type == PacketType.AgentMovementComplete) return new AgentMovementCompletePacket();
+ if(type == PacketType.LogoutRequest) return new LogoutRequestPacket();
+ if(type == PacketType.LogoutReply) return new LogoutReplyPacket();
+ if(type == PacketType.ImprovedInstantMessage) return new ImprovedInstantMessagePacket();
+ if(type == PacketType.RetrieveInstantMessages) return new RetrieveInstantMessagesPacket();
+ if(type == PacketType.FindAgent) return new FindAgentPacket();
+ if(type == PacketType.RequestGodlikePowers) return new RequestGodlikePowersPacket();
+ if(type == PacketType.GrantGodlikePowers) return new GrantGodlikePowersPacket();
+ if(type == PacketType.GodlikeMessage) return new GodlikeMessagePacket();
+ if(type == PacketType.EstateOwnerMessage) return new EstateOwnerMessagePacket();
+ if(type == PacketType.GenericMessage) return new GenericMessagePacket();
+ if(type == PacketType.MuteListRequest) return new MuteListRequestPacket();
+ if(type == PacketType.UpdateMuteListEntry) return new UpdateMuteListEntryPacket();
+ if(type == PacketType.RemoveMuteListEntry) return new RemoveMuteListEntryPacket();
+ if(type == PacketType.CopyInventoryFromNotecard) return new CopyInventoryFromNotecardPacket();
+ if(type == PacketType.UpdateInventoryItem) return new UpdateInventoryItemPacket();
+ if(type == PacketType.UpdateCreateInventoryItem) return new UpdateCreateInventoryItemPacket();
+ if(type == PacketType.MoveInventoryItem) return new MoveInventoryItemPacket();
+ if(type == PacketType.CopyInventoryItem) return new CopyInventoryItemPacket();
+ if(type == PacketType.RemoveInventoryItem) return new RemoveInventoryItemPacket();
+ if(type == PacketType.ChangeInventoryItemFlags) return new ChangeInventoryItemFlagsPacket();
+ if(type == PacketType.SaveAssetIntoInventory) return new SaveAssetIntoInventoryPacket();
+ if(type == PacketType.CreateInventoryFolder) return new CreateInventoryFolderPacket();
+ if(type == PacketType.UpdateInventoryFolder) return new UpdateInventoryFolderPacket();
+ if(type == PacketType.MoveInventoryFolder) return new MoveInventoryFolderPacket();
+ if(type == PacketType.RemoveInventoryFolder) return new RemoveInventoryFolderPacket();
+ if(type == PacketType.FetchInventoryDescendents) return new FetchInventoryDescendentsPacket();
+ if(type == PacketType.InventoryDescendents) return new InventoryDescendentsPacket();
+ if(type == PacketType.FetchInventory) return new FetchInventoryPacket();
+ if(type == PacketType.FetchInventoryReply) return new FetchInventoryReplyPacket();
+ if(type == PacketType.BulkUpdateInventory) return new BulkUpdateInventoryPacket();
+ if(type == PacketType.RequestInventoryAsset) return new RequestInventoryAssetPacket();
+ if(type == PacketType.InventoryAssetResponse) return new InventoryAssetResponsePacket();
+ if(type == PacketType.RemoveInventoryObjects) return new RemoveInventoryObjectsPacket();
+ if(type == PacketType.PurgeInventoryDescendents) return new PurgeInventoryDescendentsPacket();
+ if(type == PacketType.UpdateTaskInventory) return new UpdateTaskInventoryPacket();
+ if(type == PacketType.RemoveTaskInventory) return new RemoveTaskInventoryPacket();
+ if(type == PacketType.MoveTaskInventory) return new MoveTaskInventoryPacket();
+ if(type == PacketType.RequestTaskInventory) return new RequestTaskInventoryPacket();
+ if(type == PacketType.ReplyTaskInventory) return new ReplyTaskInventoryPacket();
+ if(type == PacketType.DeRezObject) return new DeRezObjectPacket();
+ if(type == PacketType.DeRezAck) return new DeRezAckPacket();
+ if(type == PacketType.RezObject) return new RezObjectPacket();
+ if(type == PacketType.RezObjectFromNotecard) return new RezObjectFromNotecardPacket();
+ if(type == PacketType.AcceptFriendship) return new AcceptFriendshipPacket();
+ if(type == PacketType.DeclineFriendship) return new DeclineFriendshipPacket();
+ if(type == PacketType.FormFriendship) return new FormFriendshipPacket();
+ if(type == PacketType.TerminateFriendship) return new TerminateFriendshipPacket();
+ if(type == PacketType.OfferCallingCard) return new OfferCallingCardPacket();
+ if(type == PacketType.AcceptCallingCard) return new AcceptCallingCardPacket();
+ if(type == PacketType.DeclineCallingCard) return new DeclineCallingCardPacket();
+ if(type == PacketType.RezScript) return new RezScriptPacket();
+ if(type == PacketType.CreateInventoryItem) return new CreateInventoryItemPacket();
+ if(type == PacketType.CreateLandmarkForEvent) return new CreateLandmarkForEventPacket();
+ if(type == PacketType.RegionHandleRequest) return new RegionHandleRequestPacket();
+ if(type == PacketType.RegionIDAndHandleReply) return new RegionIDAndHandleReplyPacket();
+ if(type == PacketType.MoneyTransferRequest) return new MoneyTransferRequestPacket();
+ if(type == PacketType.MoneyBalanceRequest) return new MoneyBalanceRequestPacket();
+ if(type == PacketType.MoneyBalanceReply) return new MoneyBalanceReplyPacket();
+ if(type == PacketType.RoutedMoneyBalanceReply) return new RoutedMoneyBalanceReplyPacket();
+ if(type == PacketType.ActivateGestures) return new ActivateGesturesPacket();
+ if(type == PacketType.DeactivateGestures) return new DeactivateGesturesPacket();
+ if(type == PacketType.MuteListUpdate) return new MuteListUpdatePacket();
+ if(type == PacketType.UseCachedMuteList) return new UseCachedMuteListPacket();
+ if(type == PacketType.GrantUserRights) return new GrantUserRightsPacket();
+ if(type == PacketType.ChangeUserRights) return new ChangeUserRightsPacket();
+ if(type == PacketType.OnlineNotification) return new OnlineNotificationPacket();
+ if(type == PacketType.OfflineNotification) return new OfflineNotificationPacket();
+ if(type == PacketType.SetStartLocationRequest) return new SetStartLocationRequestPacket();
+ if(type == PacketType.AssetUploadRequest) return new AssetUploadRequestPacket();
+ if(type == PacketType.AssetUploadComplete) return new AssetUploadCompletePacket();
+ if(type == PacketType.CreateGroupRequest) return new CreateGroupRequestPacket();
+ if(type == PacketType.CreateGroupReply) return new CreateGroupReplyPacket();
+ if(type == PacketType.UpdateGroupInfo) return new UpdateGroupInfoPacket();
+ if(type == PacketType.GroupRoleChanges) return new GroupRoleChangesPacket();
+ if(type == PacketType.JoinGroupRequest) return new JoinGroupRequestPacket();
+ if(type == PacketType.JoinGroupReply) return new JoinGroupReplyPacket();
+ if(type == PacketType.EjectGroupMemberRequest) return new EjectGroupMemberRequestPacket();
+ if(type == PacketType.EjectGroupMemberReply) return new EjectGroupMemberReplyPacket();
+ if(type == PacketType.LeaveGroupRequest) return new LeaveGroupRequestPacket();
+ if(type == PacketType.LeaveGroupReply) return new LeaveGroupReplyPacket();
+ if(type == PacketType.InviteGroupRequest) return new InviteGroupRequestPacket();
+ if(type == PacketType.GroupProfileRequest) return new GroupProfileRequestPacket();
+ if(type == PacketType.GroupProfileReply) return new GroupProfileReplyPacket();
+ if(type == PacketType.GroupAccountSummaryRequest) return new GroupAccountSummaryRequestPacket();
+ if(type == PacketType.GroupAccountSummaryReply) return new GroupAccountSummaryReplyPacket();
+ if(type == PacketType.GroupAccountDetailsRequest) return new GroupAccountDetailsRequestPacket();
+ if(type == PacketType.GroupAccountDetailsReply) return new GroupAccountDetailsReplyPacket();
+ if(type == PacketType.GroupAccountTransactionsRequest) return new GroupAccountTransactionsRequestPacket();
+ if(type == PacketType.GroupAccountTransactionsReply) return new GroupAccountTransactionsReplyPacket();
+ if(type == PacketType.GroupActiveProposalsRequest) return new GroupActiveProposalsRequestPacket();
+ if(type == PacketType.GroupActiveProposalItemReply) return new GroupActiveProposalItemReplyPacket();
+ if(type == PacketType.GroupVoteHistoryRequest) return new GroupVoteHistoryRequestPacket();
+ if(type == PacketType.GroupVoteHistoryItemReply) return new GroupVoteHistoryItemReplyPacket();
+ if(type == PacketType.StartGroupProposal) return new StartGroupProposalPacket();
+ if(type == PacketType.GroupProposalBallot) return new GroupProposalBallotPacket();
+ if(type == PacketType.GroupMembersRequest) return new GroupMembersRequestPacket();
+ if(type == PacketType.GroupMembersReply) return new GroupMembersReplyPacket();
+ if(type == PacketType.ActivateGroup) return new ActivateGroupPacket();
+ if(type == PacketType.SetGroupContribution) return new SetGroupContributionPacket();
+ if(type == PacketType.SetGroupAcceptNotices) return new SetGroupAcceptNoticesPacket();
+ if(type == PacketType.GroupRoleDataRequest) return new GroupRoleDataRequestPacket();
+ if(type == PacketType.GroupRoleDataReply) return new GroupRoleDataReplyPacket();
+ if(type == PacketType.GroupRoleMembersRequest) return new GroupRoleMembersRequestPacket();
+ if(type == PacketType.GroupRoleMembersReply) return new GroupRoleMembersReplyPacket();
+ if(type == PacketType.GroupTitlesRequest) return new GroupTitlesRequestPacket();
+ if(type == PacketType.GroupTitlesReply) return new GroupTitlesReplyPacket();
+ if(type == PacketType.GroupTitleUpdate) return new GroupTitleUpdatePacket();
+ if(type == PacketType.GroupRoleUpdate) return new GroupRoleUpdatePacket();
+ if(type == PacketType.LiveHelpGroupRequest) return new LiveHelpGroupRequestPacket();
+ if(type == PacketType.LiveHelpGroupReply) return new LiveHelpGroupReplyPacket();
+ if(type == PacketType.AgentWearablesRequest) return new AgentWearablesRequestPacket();
+ if(type == PacketType.AgentWearablesUpdate) return new AgentWearablesUpdatePacket();
+ if(type == PacketType.AgentIsNowWearing) return new AgentIsNowWearingPacket();
+ if(type == PacketType.AgentCachedTexture) return new AgentCachedTexturePacket();
+ if(type == PacketType.AgentCachedTextureResponse) return new AgentCachedTextureResponsePacket();
+ if(type == PacketType.AgentDataUpdateRequest) return new AgentDataUpdateRequestPacket();
+ if(type == PacketType.AgentDataUpdate) return new AgentDataUpdatePacket();
+ if(type == PacketType.GroupDataUpdate) return new GroupDataUpdatePacket();
+ if(type == PacketType.AgentGroupDataUpdate) return new AgentGroupDataUpdatePacket();
+ if(type == PacketType.AgentDropGroup) return new AgentDropGroupPacket();
+ if(type == PacketType.CreateTrustedCircuit) return new CreateTrustedCircuitPacket();
+ if(type == PacketType.DenyTrustedCircuit) return new DenyTrustedCircuitPacket();
+ if(type == PacketType.RequestTrustedCircuit) return new RequestTrustedCircuitPacket();
+ if(type == PacketType.RezSingleAttachmentFromInv) return new RezSingleAttachmentFromInvPacket();
+ if(type == PacketType.RezMultipleAttachmentsFromInv) return new RezMultipleAttachmentsFromInvPacket();
+ if(type == PacketType.DetachAttachmentIntoInv) return new DetachAttachmentIntoInvPacket();
+ if(type == PacketType.CreateNewOutfitAttachments) return new CreateNewOutfitAttachmentsPacket();
+ if(type == PacketType.UserInfoRequest) return new UserInfoRequestPacket();
+ if(type == PacketType.UserInfoReply) return new UserInfoReplyPacket();
+ if(type == PacketType.UpdateUserInfo) return new UpdateUserInfoPacket();
+ if(type == PacketType.InitiateDownload) return new InitiateDownloadPacket();
+ if(type == PacketType.SystemMessage) return new SystemMessagePacket();
+ if(type == PacketType.MapLayerRequest) return new MapLayerRequestPacket();
+ if(type == PacketType.MapLayerReply) return new MapLayerReplyPacket();
+ if(type == PacketType.MapBlockRequest) return new MapBlockRequestPacket();
+ if(type == PacketType.MapNameRequest) return new MapNameRequestPacket();
+ if(type == PacketType.MapBlockReply) return new MapBlockReplyPacket();
+ if(type == PacketType.MapItemRequest) return new MapItemRequestPacket();
+ if(type == PacketType.MapItemReply) return new MapItemReplyPacket();
+ if(type == PacketType.SendPostcard) return new SendPostcardPacket();
+ if(type == PacketType.ParcelMediaCommandMessage) return new ParcelMediaCommandMessagePacket();
+ if(type == PacketType.ParcelMediaUpdate) return new ParcelMediaUpdatePacket();
+ if(type == PacketType.LandStatRequest) return new LandStatRequestPacket();
+ if(type == PacketType.LandStatReply) return new LandStatReplyPacket();
+ if(type == PacketType.Error) return new ErrorPacket();
+ if(type == PacketType.PacketAck) return new PacketAckPacket();
+ if(type == PacketType.OpenCircuit) return new OpenCircuitPacket();
+ if(type == PacketType.CloseCircuit) return new CloseCircuitPacket();
+ return null;
+
+ }
+
public static Packet BuildPacket(byte[] bytes, ref int packetEnd, byte[] zeroBuffer)
{
ushort id; PacketFrequency freq;
@@ -1625,6 +2069,11 @@ namespace libsecondlife.Packets
public TestBlock1Block() { }
public TestBlock1Block(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -1670,6 +2119,11 @@ namespace libsecondlife.Packets
public NeighborBlockBlock() { }
public NeighborBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -1725,23 +2179,50 @@ namespace libsecondlife.Packets
NeighborBlock = new NeighborBlockBlock[4];
}
- public TestMessagePacket(byte[] bytes, ref int i)
+ public TestMessagePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- TestBlock1 = new TestBlock1Block(bytes, ref i);
- NeighborBlock = new NeighborBlockBlock[4];
- for (int j = 0; j < 4; j++)
- { NeighborBlock[j] = new NeighborBlockBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TestMessagePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TestBlock1.FromBytes(bytes, ref i);
+ if(NeighborBlock.Length < 4) {
+ NeighborBlock = new NeighborBlockBlock[4];
+ for(int j = 0; j < 4; j++) NeighborBlock[j] = new NeighborBlockBlock();
+ }
+ for (int j = 0; j < 4; j++)
+ { NeighborBlock[j].FromBytes(bytes, ref i); }
+ }
+
+ public TestMessagePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- TestBlock1 = new TestBlock1Block(bytes, ref i);
- NeighborBlock = new NeighborBlockBlock[4];
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TestBlock1.FromBytes(bytes, ref i);
+ if(NeighborBlock.Length < 4) {
+ NeighborBlock = new NeighborBlockBlock[4];
+ for(int j = 0; j < 4; j++) NeighborBlock[j] = new NeighborBlockBlock();
+ }
for (int j = 0; j < 4; j++)
- { NeighborBlock[j] = new NeighborBlockBlock(bytes, ref i); }
+ { NeighborBlock[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -1792,12 +2273,17 @@ namespace libsecondlife.Packets
public CircuitCodeBlock() { }
public CircuitCodeBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
Code = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- SessionID = new LLUUID(bytes, i); i += 16;
- ID = new LLUUID(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -1839,17 +2325,38 @@ namespace libsecondlife.Packets
CircuitCode = new CircuitCodeBlock();
}
- public UseCircuitCodePacket(byte[] bytes, ref int i)
+ public UseCircuitCodePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- CircuitCode = new CircuitCodeBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UseCircuitCodePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ CircuitCode.FromBytes(bytes, ref i);
+ }
+
+ public UseCircuitCodePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- CircuitCode = new CircuitCodeBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ CircuitCode.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -1907,16 +2414,21 @@ namespace libsecondlife.Packets
public TelehubBlockBlock() { }
public TelehubBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_objectname = new byte[length];
Buffer.BlockCopy(bytes, i, _objectname, 0, length); i += length;
- TelehubPos = new LLVector3(bytes, i); i += 12;
- TelehubRot = new LLQuaternion(bytes, i, true); i += 12;
+ TelehubPos.FromBytes(bytes, i); i += 12;
+ TelehubRot.FromBytes(bytes, i, true); i += 12;
}
catch (Exception)
{
@@ -1962,10 +2474,15 @@ namespace libsecondlife.Packets
public SpawnPointBlockBlock() { }
public SpawnPointBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- SpawnPointPos = new LLVector3(bytes, i); i += 12;
+ SpawnPointPos.FromBytes(bytes, i); i += 12;
}
catch (Exception)
{
@@ -2002,25 +2519,52 @@ namespace libsecondlife.Packets
SpawnPointBlock = new SpawnPointBlockBlock[0];
}
- public TelehubInfoPacket(byte[] bytes, ref int i)
+ public TelehubInfoPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- TelehubBlock = new TelehubBlockBlock(bytes, ref i);
- int count = (int)bytes[i++];
- SpawnPointBlock = new SpawnPointBlockBlock[count];
- for (int j = 0; j < count; j++)
- { SpawnPointBlock[j] = new SpawnPointBlockBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TelehubInfoPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TelehubBlock.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(SpawnPointBlock.Length < count) {
+ SpawnPointBlock = new SpawnPointBlockBlock[count];
+ for(int j = 0; j < count; j++) SpawnPointBlock[j] = new SpawnPointBlockBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { SpawnPointBlock[j].FromBytes(bytes, ref i); }
+ }
+
+ public TelehubInfoPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- TelehubBlock = new TelehubBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TelehubBlock.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- SpawnPointBlock = new SpawnPointBlockBlock[count];
+ if(SpawnPointBlock.Length < count) {
+ SpawnPointBlock = new SpawnPointBlockBlock[count];
+ for(int j = 0; j < count; j++) SpawnPointBlock[j] = new SpawnPointBlockBlock();
+ }
for (int j = 0; j < count; j++)
- { SpawnPointBlock[j] = new SpawnPointBlockBlock(bytes, ref i); }
+ { SpawnPointBlock[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -2067,15 +2611,36 @@ namespace libsecondlife.Packets
Header.Reliable = true;
}
- public EconomyDataRequestPacket(byte[] bytes, ref int i)
+ public EconomyDataRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public EconomyDataRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ }
+
+ public EconomyDataRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
}
public override byte[] ToBytes()
@@ -2132,6 +2697,11 @@ namespace libsecondlife.Packets
public InfoBlock() { }
public InfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -2270,17 +2840,38 @@ namespace libsecondlife.Packets
Info = new InfoBlock();
}
- public EconomyDataPacket(byte[] bytes, ref int i)
+ public EconomyDataPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Info = new InfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public EconomyDataPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
+ }
+
+ public EconomyDataPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Info = new InfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -2325,12 +2916,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- QueryID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -2383,6 +2979,11 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -2428,19 +3029,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public AvatarPickerRequestPacket(byte[] bytes, ref int i)
+ public AvatarPickerRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AvatarPickerRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public AvatarPickerRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -2486,11 +3108,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- QueryID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -2554,11 +3181,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- AvatarID = new LLUUID(bytes, i); i += 16;
+ AvatarID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_firstname = new byte[length];
Buffer.BlockCopy(bytes, i, _firstname, 0, length); i += length;
@@ -2610,25 +3242,52 @@ namespace libsecondlife.Packets
Data = new DataBlock[0];
}
- public AvatarPickerReplyPacket(byte[] bytes, ref int i)
+ public AvatarPickerReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- Data = new DataBlock[count];
- for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AvatarPickerReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Data[j].FromBytes(bytes, ref i); }
+ }
+
+ public AvatarPickerReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- Data = new DataBlock[count];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ { Data[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -2681,12 +3340,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- QueryID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -2727,10 +3391,15 @@ namespace libsecondlife.Packets
public TransactionDataBlock() { }
public TransactionDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -2793,6 +3462,11 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -2857,21 +3531,42 @@ namespace libsecondlife.Packets
QueryData = new QueryDataBlock();
}
- public PlacesQueryPacket(byte[] bytes, ref int i)
+ public PlacesQueryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionData = new TransactionDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public PlacesQueryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
+ }
+
+ public PlacesQueryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionData = new TransactionDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -2919,11 +3614,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- QueryID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -2962,10 +3662,15 @@ namespace libsecondlife.Packets
public TransactionDataBlock() { }
public TransactionDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -3048,11 +3753,16 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- OwnerID = new LLUUID(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
@@ -3071,7 +3781,7 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_simname = new byte[length];
Buffer.BlockCopy(bytes, i, _simname, 0, length); i += length;
- SnapshotID = new LLUUID(bytes, i); i += 16;
+ SnapshotID.FromBytes(bytes, i); i += 16;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
Dwell = BitConverter.ToSingle(bytes, i); i += 4;
Price = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -3164,27 +3874,54 @@ namespace libsecondlife.Packets
QueryData = new QueryDataBlock[0];
}
- public PlacesReplyPacket(byte[] bytes, ref int i)
+ public PlacesReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionData = new TransactionDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- QueryData = new QueryDataBlock[count];
- for (int j = 0; j < count; j++)
- { QueryData[j] = new QueryDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public PlacesReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(QueryData.Length < count) {
+ QueryData = new QueryDataBlock[count];
+ for(int j = 0; j < count; j++) QueryData[j] = new QueryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { QueryData[j].FromBytes(bytes, ref i); }
+ }
+
+ public PlacesReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionData = new TransactionDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- QueryData = new QueryDataBlock[count];
+ if(QueryData.Length < count) {
+ QueryData = new QueryDataBlock[count];
+ for(int j = 0; j < count; j++) QueryData[j] = new QueryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { QueryData[j] = new QueryDataBlock(bytes, ref i); }
+ { QueryData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -3238,11 +3975,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -3296,11 +4038,16 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- QueryID = new LLUUID(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_querytext = new byte[length];
Buffer.BlockCopy(bytes, i, _querytext, 0, length); i += length;
@@ -3357,19 +4104,40 @@ namespace libsecondlife.Packets
QueryData = new QueryDataBlock();
}
- public DirFindQueryPacket(byte[] bytes, ref int i)
+ public DirFindQueryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DirFindQueryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
+ }
+
+ public DirFindQueryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -3415,11 +4183,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -3486,11 +4259,16 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- QueryID = new LLUUID(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_querytext = new byte[length];
Buffer.BlockCopy(bytes, i, _querytext, 0, length); i += length;
@@ -3558,19 +4336,40 @@ namespace libsecondlife.Packets
QueryData = new QueryDataBlock();
}
- public DirPlacesQueryPacket(byte[] bytes, ref int i)
+ public DirPlacesQueryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DirPlacesQueryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
+ }
+
+ public DirPlacesQueryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -3615,10 +4414,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -3655,10 +4459,15 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- QueryID = new LLUUID(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -3711,11 +4520,16 @@ namespace libsecondlife.Packets
public QueryRepliesBlock() { }
public QueryRepliesBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ParcelID = new LLUUID(bytes, i); i += 16;
+ ParcelID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
@@ -3775,33 +4589,66 @@ namespace libsecondlife.Packets
QueryReplies = new QueryRepliesBlock[0];
}
- public DirPlacesReplyPacket(byte[] bytes, ref int i)
+ public DirPlacesReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- QueryData = new QueryDataBlock[count];
- for (int j = 0; j < count; j++)
- { QueryData[j] = new QueryDataBlock(bytes, ref i); }
- count = (int)bytes[i++];
- QueryReplies = new QueryRepliesBlock[count];
- for (int j = 0; j < count; j++)
- { QueryReplies[j] = new QueryRepliesBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DirPlacesReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(QueryData.Length < count) {
+ QueryData = new QueryDataBlock[count];
+ for(int j = 0; j < count; j++) QueryData[j] = new QueryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { QueryData[j].FromBytes(bytes, ref i); }
+ count = (int)bytes[i++];
+ if(QueryReplies.Length < count) {
+ QueryReplies = new QueryRepliesBlock[count];
+ for(int j = 0; j < count; j++) QueryReplies[j] = new QueryRepliesBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { QueryReplies[j].FromBytes(bytes, ref i); }
+ }
+
+ public DirPlacesReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- QueryData = new QueryDataBlock[count];
+ if(QueryData.Length < count) {
+ QueryData = new QueryDataBlock[count];
+ for(int j = 0; j < count; j++) QueryData[j] = new QueryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { QueryData[j] = new QueryDataBlock(bytes, ref i); }
+ { QueryData[j].FromBytes(bytes, ref i); }
count = (int)bytes[i++];
- QueryReplies = new QueryRepliesBlock[count];
+ if(QueryReplies.Length < count) {
+ QueryReplies = new QueryRepliesBlock[count];
+ for(int j = 0; j < count; j++) QueryReplies[j] = new QueryRepliesBlock();
+ }
for (int j = 0; j < count; j++)
- { QueryReplies[j] = new QueryRepliesBlock(bytes, ref i); }
+ { QueryReplies[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -3860,10 +4707,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -3900,10 +4752,15 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- QueryID = new LLUUID(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -3979,11 +4836,16 @@ namespace libsecondlife.Packets
public QueryRepliesBlock() { }
public QueryRepliesBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_firstname = new byte[length];
Buffer.BlockCopy(bytes, i, _firstname, 0, length); i += length;
@@ -4055,27 +4917,54 @@ namespace libsecondlife.Packets
QueryReplies = new QueryRepliesBlock[0];
}
- public DirPeopleReplyPacket(byte[] bytes, ref int i)
+ public DirPeopleReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- QueryReplies = new QueryRepliesBlock[count];
- for (int j = 0; j < count; j++)
- { QueryReplies[j] = new QueryRepliesBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DirPeopleReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(QueryReplies.Length < count) {
+ QueryReplies = new QueryRepliesBlock[count];
+ for(int j = 0; j < count; j++) QueryReplies[j] = new QueryRepliesBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { QueryReplies[j].FromBytes(bytes, ref i); }
+ }
+
+ public DirPeopleReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- QueryReplies = new QueryRepliesBlock[count];
+ if(QueryReplies.Length < count) {
+ QueryReplies = new QueryRepliesBlock[count];
+ for(int j = 0; j < count; j++) QueryReplies[j] = new QueryRepliesBlock();
+ }
for (int j = 0; j < count; j++)
- { QueryReplies[j] = new QueryRepliesBlock(bytes, ref i); }
+ { QueryReplies[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -4128,10 +5017,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -4168,10 +5062,15 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- QueryID = new LLUUID(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -4236,11 +5135,16 @@ namespace libsecondlife.Packets
public QueryRepliesBlock() { }
public QueryRepliesBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- OwnerID = new LLUUID(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
@@ -4313,27 +5217,54 @@ namespace libsecondlife.Packets
QueryReplies = new QueryRepliesBlock[0];
}
- public DirEventsReplyPacket(byte[] bytes, ref int i)
+ public DirEventsReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- QueryReplies = new QueryRepliesBlock[count];
- for (int j = 0; j < count; j++)
- { QueryReplies[j] = new QueryRepliesBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DirEventsReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(QueryReplies.Length < count) {
+ QueryReplies = new QueryRepliesBlock[count];
+ for(int j = 0; j < count; j++) QueryReplies[j] = new QueryRepliesBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { QueryReplies[j].FromBytes(bytes, ref i); }
+ }
+
+ public DirEventsReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- QueryReplies = new QueryRepliesBlock[count];
+ if(QueryReplies.Length < count) {
+ QueryReplies = new QueryRepliesBlock[count];
+ for(int j = 0; j < count; j++) QueryReplies[j] = new QueryRepliesBlock();
+ }
for (int j = 0; j < count; j++)
- { QueryReplies[j] = new QueryRepliesBlock(bytes, ref i); }
+ { QueryReplies[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -4386,10 +5317,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -4426,10 +5362,15 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- QueryID = new LLUUID(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -4481,11 +5422,16 @@ namespace libsecondlife.Packets
public QueryRepliesBlock() { }
public QueryRepliesBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_groupname = new byte[length];
Buffer.BlockCopy(bytes, i, _groupname, 0, length); i += length;
@@ -4545,27 +5491,54 @@ namespace libsecondlife.Packets
QueryReplies = new QueryRepliesBlock[0];
}
- public DirGroupsReplyPacket(byte[] bytes, ref int i)
+ public DirGroupsReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- QueryReplies = new QueryRepliesBlock[count];
- for (int j = 0; j < count; j++)
- { QueryReplies[j] = new QueryRepliesBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DirGroupsReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(QueryReplies.Length < count) {
+ QueryReplies = new QueryRepliesBlock[count];
+ for(int j = 0; j < count; j++) QueryReplies[j] = new QueryRepliesBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { QueryReplies[j].FromBytes(bytes, ref i); }
+ }
+
+ public DirGroupsReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- QueryReplies = new QueryRepliesBlock[count];
+ if(QueryReplies.Length < count) {
+ QueryReplies = new QueryRepliesBlock[count];
+ for(int j = 0; j < count; j++) QueryReplies[j] = new QueryRepliesBlock();
+ }
for (int j = 0; j < count; j++)
- { QueryReplies[j] = new QueryRepliesBlock(bytes, ref i); }
+ { QueryReplies[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -4619,11 +5592,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -4678,11 +5656,16 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- QueryID = new LLUUID(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_querytext = new byte[length];
Buffer.BlockCopy(bytes, i, _querytext, 0, length); i += length;
@@ -4745,19 +5728,40 @@ namespace libsecondlife.Packets
QueryData = new QueryDataBlock();
}
- public DirClassifiedQueryPacket(byte[] bytes, ref int i)
+ public DirClassifiedQueryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DirClassifiedQueryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
+ }
+
+ public DirClassifiedQueryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -4802,10 +5806,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -4842,10 +5851,15 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- QueryID = new LLUUID(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -4899,11 +5913,16 @@ namespace libsecondlife.Packets
public QueryRepliesBlock() { }
public QueryRepliesBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ClassifiedID = new LLUUID(bytes, i); i += 16;
+ ClassifiedID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
@@ -4971,27 +5990,54 @@ namespace libsecondlife.Packets
QueryReplies = new QueryRepliesBlock[0];
}
- public DirClassifiedReplyPacket(byte[] bytes, ref int i)
+ public DirClassifiedReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- QueryReplies = new QueryRepliesBlock[count];
- for (int j = 0; j < count; j++)
- { QueryReplies[j] = new QueryRepliesBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DirClassifiedReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(QueryReplies.Length < count) {
+ QueryReplies = new QueryRepliesBlock[count];
+ for(int j = 0; j < count; j++) QueryReplies[j] = new QueryRepliesBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { QueryReplies[j].FromBytes(bytes, ref i); }
+ }
+
+ public DirClassifiedReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- QueryReplies = new QueryRepliesBlock[count];
+ if(QueryReplies.Length < count) {
+ QueryReplies = new QueryRepliesBlock[count];
+ for(int j = 0; j < count; j++) QueryReplies[j] = new QueryRepliesBlock();
+ }
for (int j = 0; j < count; j++)
- { QueryReplies[j] = new QueryRepliesBlock(bytes, ref i); }
+ { QueryReplies[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -5045,11 +6091,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- TargetID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ TargetID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -5101,11 +6152,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ClassifiedID = new LLUUID(bytes, i); i += 16;
+ ClassifiedID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
@@ -5149,25 +6205,52 @@ namespace libsecondlife.Packets
Data = new DataBlock[0];
}
- public AvatarClassifiedReplyPacket(byte[] bytes, ref int i)
+ public AvatarClassifiedReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- Data = new DataBlock[count];
- for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AvatarClassifiedReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Data[j].FromBytes(bytes, ref i); }
+ }
+
+ public AvatarClassifiedReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- Data = new DataBlock[count];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ { Data[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -5219,11 +6302,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -5262,10 +6350,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ClassifiedID = new LLUUID(bytes, i); i += 16;
+ ClassifiedID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -5302,19 +6395,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ClassifiedInfoRequestPacket(byte[] bytes, ref int i)
+ public ClassifiedInfoRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ClassifiedInfoRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ClassifiedInfoRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -5359,10 +6473,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -5458,12 +6577,17 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ClassifiedID = new LLUUID(bytes, i); i += 16;
- CreatorID = new LLUUID(bytes, i); i += 16;
+ ClassifiedID.FromBytes(bytes, i); i += 16;
+ CreatorID.FromBytes(bytes, i); i += 16;
CreationDate = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
ExpirationDate = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Category = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -5473,13 +6597,13 @@ namespace libsecondlife.Packets
length = (ushort)(bytes[i++] + (bytes[i++] << 8));
_desc = new byte[length];
Buffer.BlockCopy(bytes, i, _desc, 0, length); i += length;
- ParcelID = new LLUUID(bytes, i); i += 16;
+ ParcelID.FromBytes(bytes, i); i += 16;
ParentEstate = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- SnapshotID = new LLUUID(bytes, i); i += 16;
+ SnapshotID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_simname = new byte[length];
Buffer.BlockCopy(bytes, i, _simname, 0, length); i += length;
- PosGlobal = new LLVector3d(bytes, i); i += 24;
+ PosGlobal.FromBytes(bytes, i); i += 24;
length = (ushort)bytes[i++];
_parcelname = new byte[length];
Buffer.BlockCopy(bytes, i, _parcelname, 0, length); i += length;
@@ -5577,19 +6701,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ClassifiedInfoReplyPacket(byte[] bytes, ref int i)
+ public ClassifiedInfoReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ClassifiedInfoReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ClassifiedInfoReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -5635,11 +6780,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -5710,11 +6860,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ClassifiedID = new LLUUID(bytes, i); i += 16;
+ ClassifiedID.FromBytes(bytes, i); i += 16;
Category = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
length = (ushort)bytes[i++];
_name = new byte[length];
@@ -5722,10 +6877,10 @@ namespace libsecondlife.Packets
length = (ushort)(bytes[i++] + (bytes[i++] << 8));
_desc = new byte[length];
Buffer.BlockCopy(bytes, i, _desc, 0, length); i += length;
- ParcelID = new LLUUID(bytes, i); i += 16;
+ ParcelID.FromBytes(bytes, i); i += 16;
ParentEstate = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- SnapshotID = new LLUUID(bytes, i); i += 16;
- PosGlobal = new LLVector3d(bytes, i); i += 24;
+ SnapshotID.FromBytes(bytes, i); i += 16;
+ PosGlobal.FromBytes(bytes, i); i += 24;
ClassifiedFlags = (byte)bytes[i++];
PriceForListing = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
@@ -5798,19 +6953,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ClassifiedInfoUpdatePacket(byte[] bytes, ref int i)
+ public ClassifiedInfoUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ClassifiedInfoUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ClassifiedInfoUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -5856,11 +7032,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -5899,10 +7080,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ClassifiedID = new LLUUID(bytes, i); i += 16;
+ ClassifiedID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -5939,19 +7125,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ClassifiedDeletePacket(byte[] bytes, ref int i)
+ public ClassifiedDeletePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ClassifiedDeletePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ClassifiedDeletePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -5997,11 +7204,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -6041,11 +7253,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ClassifiedID = new LLUUID(bytes, i); i += 16;
- QueryID = new LLUUID(bytes, i); i += 16;
+ ClassifiedID.FromBytes(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -6084,19 +7301,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ClassifiedGodDeletePacket(byte[] bytes, ref int i)
+ public ClassifiedGodDeletePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ClassifiedGodDeletePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ClassifiedGodDeletePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -6142,11 +7380,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -6190,10 +7433,15 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- QueryID = new LLUUID(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
QueryFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
SearchType = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Price = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -6260,19 +7508,40 @@ namespace libsecondlife.Packets
QueryData = new QueryDataBlock();
}
- public DirLandQueryPacket(byte[] bytes, ref int i)
+ public DirLandQueryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DirLandQueryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
+ }
+
+ public DirLandQueryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -6317,10 +7586,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -6357,10 +7631,15 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- QueryID = new LLUUID(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -6414,11 +7693,16 @@ namespace libsecondlife.Packets
public QueryRepliesBlock() { }
public QueryRepliesBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ParcelID = new LLUUID(bytes, i); i += 16;
+ ParcelID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
@@ -6483,27 +7767,54 @@ namespace libsecondlife.Packets
QueryReplies = new QueryRepliesBlock[0];
}
- public DirLandReplyPacket(byte[] bytes, ref int i)
+ public DirLandReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- QueryReplies = new QueryRepliesBlock[count];
- for (int j = 0; j < count; j++)
- { QueryReplies[j] = new QueryRepliesBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DirLandReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(QueryReplies.Length < count) {
+ QueryReplies = new QueryRepliesBlock[count];
+ for(int j = 0; j < count; j++) QueryReplies[j] = new QueryRepliesBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { QueryReplies[j].FromBytes(bytes, ref i); }
+ }
+
+ public DirLandReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- QueryReplies = new QueryRepliesBlock[count];
+ if(QueryReplies.Length < count) {
+ QueryReplies = new QueryRepliesBlock[count];
+ for(int j = 0; j < count; j++) QueryReplies[j] = new QueryRepliesBlock();
+ }
for (int j = 0; j < count; j++)
- { QueryReplies[j] = new QueryRepliesBlock(bytes, ref i); }
+ { QueryReplies[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -6557,11 +7868,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -6601,10 +7917,15 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- QueryID = new LLUUID(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
QueryFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -6647,19 +7968,40 @@ namespace libsecondlife.Packets
QueryData = new QueryDataBlock();
}
- public DirPopularQueryPacket(byte[] bytes, ref int i)
+ public DirPopularQueryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DirPopularQueryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
+ }
+
+ public DirPopularQueryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -6704,10 +8046,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -6744,10 +8091,15 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- QueryID = new LLUUID(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -6798,11 +8150,16 @@ namespace libsecondlife.Packets
public QueryRepliesBlock() { }
public QueryRepliesBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ParcelID = new LLUUID(bytes, i); i += 16;
+ ParcelID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
@@ -6856,27 +8213,54 @@ namespace libsecondlife.Packets
QueryReplies = new QueryRepliesBlock[0];
}
- public DirPopularReplyPacket(byte[] bytes, ref int i)
+ public DirPopularReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- QueryReplies = new QueryRepliesBlock[count];
- for (int j = 0; j < count; j++)
- { QueryReplies[j] = new QueryRepliesBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DirPopularReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(QueryReplies.Length < count) {
+ QueryReplies = new QueryRepliesBlock[count];
+ for(int j = 0; j < count; j++) QueryReplies[j] = new QueryRepliesBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { QueryReplies[j].FromBytes(bytes, ref i); }
+ }
+
+ public DirPopularReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- QueryReplies = new QueryRepliesBlock[count];
+ if(QueryReplies.Length < count) {
+ QueryReplies = new QueryRepliesBlock[count];
+ for(int j = 0; j < count; j++) QueryReplies[j] = new QueryRepliesBlock();
+ }
for (int j = 0; j < count; j++)
- { QueryReplies[j] = new QueryRepliesBlock(bytes, ref i); }
+ { QueryReplies[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -6930,11 +8314,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -6973,10 +8362,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ParcelID = new LLUUID(bytes, i); i += 16;
+ ParcelID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -7013,19 +8407,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ParcelInfoRequestPacket(byte[] bytes, ref int i)
+ public ParcelInfoRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelInfoRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ParcelInfoRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -7070,10 +8485,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -7158,12 +8578,17 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ParcelID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
+ ParcelID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
@@ -7182,7 +8607,7 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_simname = new byte[length];
Buffer.BlockCopy(bytes, i, _simname, 0, length); i += length;
- SnapshotID = new LLUUID(bytes, i); i += 16;
+ SnapshotID.FromBytes(bytes, i); i += 16;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
Dwell = BitConverter.ToSingle(bytes, i); i += 4;
SalePrice = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -7281,19 +8706,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ParcelInfoReplyPacket(byte[] bytes, ref int i)
+ public ParcelInfoReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelInfoReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ParcelInfoReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -7339,11 +8785,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -7382,6 +8833,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -7425,19 +8881,40 @@ namespace libsecondlife.Packets
ParcelData = new ParcelDataBlock();
}
- public ParcelObjectOwnersRequestPacket(byte[] bytes, ref int i)
+ public ParcelObjectOwnersRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelObjectOwnersRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
+ }
+
+ public ParcelObjectOwnersRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -7485,10 +8962,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- OwnerID = new LLUUID(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
IsGroupOwned = (bytes[i++] != 0) ? (bool)true : (bool)false;
Count = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
OnlineStatus = (bytes[i++] != 0) ? (bool)true : (bool)false;
@@ -7535,23 +9017,50 @@ namespace libsecondlife.Packets
Data = new DataBlock[0];
}
- public ParcelObjectOwnersReplyPacket(byte[] bytes, ref int i)
+ public ParcelObjectOwnersReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- int count = (int)bytes[i++];
- Data = new DataBlock[count];
- for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelObjectOwnersReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ int count = (int)bytes[i++];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Data[j].FromBytes(bytes, ref i); }
+ }
+
+ public ParcelObjectOwnersReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
int count = (int)bytes[i++];
- Data = new DataBlock[count];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ { Data[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -7601,11 +9110,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -7644,10 +9158,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -7684,19 +9203,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public GroupNoticesListRequestPacket(byte[] bytes, ref int i)
+ public GroupNoticesListRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupNoticesListRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public GroupNoticesListRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -7742,11 +9282,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -7813,11 +9358,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- NoticeID = new LLUUID(bytes, i); i += 16;
+ NoticeID.FromBytes(bytes, i); i += 16;
Timestamp = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
length = (ushort)(bytes[i++] + (bytes[i++] << 8));
_fromname = new byte[length];
@@ -7884,25 +9434,52 @@ namespace libsecondlife.Packets
Data = new DataBlock[0];
}
- public GroupNoticesListReplyPacket(byte[] bytes, ref int i)
+ public GroupNoticesListReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- Data = new DataBlock[count];
- for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupNoticesListReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Data[j].FromBytes(bytes, ref i); }
+ }
+
+ public GroupNoticesListReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- Data = new DataBlock[count];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ { Data[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -7954,11 +9531,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -7997,10 +9579,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupNoticeID = new LLUUID(bytes, i); i += 16;
+ GroupNoticeID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -8037,19 +9624,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public GroupNoticeRequestPacket(byte[] bytes, ref int i)
+ public GroupNoticeRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupNoticeRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public GroupNoticeRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -8095,11 +9703,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -8140,12 +9753,17 @@ namespace libsecondlife.Packets
public InfoBlock() { }
public InfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- RegionID = new LLUUID(bytes, i); i += 16;
- Position = new LLVector3(bytes, i); i += 12;
- LookAt = new LLVector3(bytes, i); i += 12;
+ RegionID.FromBytes(bytes, i); i += 16;
+ Position.FromBytes(bytes, i); i += 12;
+ LookAt.FromBytes(bytes, i); i += 12;
}
catch (Exception)
{
@@ -8186,19 +9804,40 @@ namespace libsecondlife.Packets
Info = new InfoBlock();
}
- public TeleportRequestPacket(byte[] bytes, ref int i)
+ public TeleportRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Info = new InfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TeleportRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Info.FromBytes(bytes, ref i);
+ }
+
+ public TeleportRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Info = new InfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Info.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -8244,11 +9883,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -8289,12 +9933,17 @@ namespace libsecondlife.Packets
public InfoBlock() { }
public InfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
RegionHandle = (ulong)((ulong)bytes[i++] + ((ulong)bytes[i++] << 8) + ((ulong)bytes[i++] << 16) + ((ulong)bytes[i++] << 24) + ((ulong)bytes[i++] << 32) + ((ulong)bytes[i++] << 40) + ((ulong)bytes[i++] << 48) + ((ulong)bytes[i++] << 56));
- Position = new LLVector3(bytes, i); i += 12;
- LookAt = new LLVector3(bytes, i); i += 12;
+ Position.FromBytes(bytes, i); i += 12;
+ LookAt.FromBytes(bytes, i); i += 12;
}
catch (Exception)
{
@@ -8342,19 +9991,40 @@ namespace libsecondlife.Packets
Info = new InfoBlock();
}
- public TeleportLocationRequestPacket(byte[] bytes, ref int i)
+ public TeleportLocationRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Info = new InfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TeleportLocationRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Info.FromBytes(bytes, ref i);
+ }
+
+ public TeleportLocationRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Info = new InfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Info.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -8403,13 +10073,18 @@ namespace libsecondlife.Packets
public InfoBlock() { }
public InfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
LocationID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- Position = new LLVector3(bytes, i); i += 12;
- LookAt = new LLVector3(bytes, i); i += 12;
+ Position.FromBytes(bytes, i); i += 12;
+ LookAt.FromBytes(bytes, i); i += 12;
TeleportFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -8459,17 +10134,38 @@ namespace libsecondlife.Packets
Info = new InfoBlock();
}
- public TeleportLocalPacket(byte[] bytes, ref int i)
+ public TeleportLocalPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Info = new InfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TeleportLocalPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
+ }
+
+ public TeleportLocalPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Info = new InfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -8514,12 +10210,17 @@ namespace libsecondlife.Packets
public InfoBlock() { }
public InfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- LandmarkID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ LandmarkID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -8558,17 +10259,38 @@ namespace libsecondlife.Packets
Info = new InfoBlock();
}
- public TeleportLandmarkRequestPacket(byte[] bytes, ref int i)
+ public TeleportLandmarkRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Info = new InfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TeleportLandmarkRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
+ }
+
+ public TeleportLandmarkRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Info = new InfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -8611,10 +10333,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -8664,6 +10391,11 @@ namespace libsecondlife.Packets
public InfoBlock() { }
public InfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -8715,19 +10447,40 @@ namespace libsecondlife.Packets
Info = new InfoBlock();
}
- public TeleportProgressPacket(byte[] bytes, ref int i)
+ public TeleportProgressPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Info = new InfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TeleportProgressPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Info.FromBytes(bytes, ref i);
+ }
+
+ public TeleportProgressPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Info = new InfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Info.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -8791,11 +10544,16 @@ namespace libsecondlife.Packets
public InfoBlock() { }
public InfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
LocationID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
SimIP = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
SimPort = (ushort)((bytes[i++] << 8) + bytes[i++]);
@@ -8874,17 +10632,38 @@ namespace libsecondlife.Packets
Info = new InfoBlock();
}
- public TeleportFinishPacket(byte[] bytes, ref int i)
+ public TeleportFinishPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Info = new InfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TeleportFinishPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
+ }
+
+ public TeleportFinishPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Info = new InfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -8928,11 +10707,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -8984,6 +10768,11 @@ namespace libsecondlife.Packets
public InfoBlock() { }
public InfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -9032,10 +10821,15 @@ namespace libsecondlife.Packets
public TargetDataBlock() { }
public TargetDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TargetID = new LLUUID(bytes, i); i += 16;
+ TargetID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -9074,27 +10868,54 @@ namespace libsecondlife.Packets
TargetData = new TargetDataBlock[0];
}
- public StartLurePacket(byte[] bytes, ref int i)
+ public StartLurePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Info = new InfoBlock(bytes, ref i);
- int count = (int)bytes[i++];
- TargetData = new TargetDataBlock[count];
- for (int j = 0; j < count; j++)
- { TargetData[j] = new TargetDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public StartLurePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Info.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(TargetData.Length < count) {
+ TargetData = new TargetDataBlock[count];
+ for(int j = 0; j < count; j++) TargetData[j] = new TargetDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { TargetData[j].FromBytes(bytes, ref i); }
+ }
+
+ public StartLurePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Info = new InfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Info.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- TargetData = new TargetDataBlock[count];
+ if(TargetData.Length < count) {
+ TargetData = new TargetDataBlock[count];
+ for(int j = 0; j < count; j++) TargetData[j] = new TargetDataBlock();
+ }
for (int j = 0; j < count; j++)
- { TargetData[j] = new TargetDataBlock(bytes, ref i); }
+ { TargetData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -9150,12 +10971,17 @@ namespace libsecondlife.Packets
public InfoBlock() { }
public InfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- LureID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ LureID.FromBytes(bytes, i); i += 16;
TeleportFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -9200,17 +11026,38 @@ namespace libsecondlife.Packets
Info = new InfoBlock();
}
- public TeleportLureRequestPacket(byte[] bytes, ref int i)
+ public TeleportLureRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Info = new InfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TeleportLureRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
+ }
+
+ public TeleportLureRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Info = new InfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -9254,11 +11101,16 @@ namespace libsecondlife.Packets
public InfoBlock() { }
public InfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -9295,17 +11147,38 @@ namespace libsecondlife.Packets
Info = new InfoBlock();
}
- public TeleportCancelPacket(byte[] bytes, ref int i)
+ public TeleportCancelPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Info = new InfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TeleportCancelPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
+ }
+
+ public TeleportCancelPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Info = new InfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -9348,6 +11221,11 @@ namespace libsecondlife.Packets
public InfoBlock() { }
public InfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -9389,17 +11267,38 @@ namespace libsecondlife.Packets
Info = new InfoBlock();
}
- public TeleportStartPacket(byte[] bytes, ref int i)
+ public TeleportStartPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Info = new InfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TeleportStartPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
+ }
+
+ public TeleportStartPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Info = new InfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -9455,11 +11354,16 @@ namespace libsecondlife.Packets
public InfoBlock() { }
public InfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_reason = new byte[length];
Buffer.BlockCopy(bytes, i, _reason, 0, length); i += length;
@@ -9501,17 +11405,38 @@ namespace libsecondlife.Packets
Info = new InfoBlock();
}
- public TeleportFailedPacket(byte[] bytes, ref int i)
+ public TeleportFailedPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Info = new InfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TeleportFailedPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
+ }
+
+ public TeleportFailedPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Info = new InfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Info.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -9556,12 +11481,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -9602,10 +11532,15 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -9642,25 +11577,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public UndoPacket(byte[] bytes, ref int i)
+ public UndoPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UndoPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public UndoPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -9713,12 +11675,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -9759,10 +11726,15 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -9799,25 +11771,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public RedoPacket(byte[] bytes, ref int i)
+ public RedoPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RedoPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public RedoPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -9869,11 +11868,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -9910,17 +11914,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public UndoLandPacket(byte[] bytes, ref int i)
+ public UndoLandPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UndoLandPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public UndoLandPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -9965,11 +11990,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
SerialNum = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -10012,17 +12042,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public AgentPausePacket(byte[] bytes, ref int i)
+ public AgentPausePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentPausePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public AgentPausePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -10067,11 +12118,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
SerialNum = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -10114,17 +12170,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public AgentResumePacket(byte[] bytes, ref int i)
+ public AgentResumePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentResumePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public AgentResumePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -10168,11 +12245,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -10225,6 +12307,11 @@ namespace libsecondlife.Packets
public ChatDataBlock() { }
public ChatDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -10281,19 +12368,40 @@ namespace libsecondlife.Packets
ChatData = new ChatDataBlock();
}
- public ChatFromViewerPacket(byte[] bytes, ref int i)
+ public ChatFromViewerPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ChatData = new ChatDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ChatFromViewerPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ChatData.FromBytes(bytes, ref i);
+ }
+
+ public ChatFromViewerPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ChatData = new ChatDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ChatData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -10340,11 +12448,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
CircuitCode = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -10402,6 +12515,11 @@ namespace libsecondlife.Packets
public ThrottleBlock() { }
public ThrottleBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -10453,19 +12571,40 @@ namespace libsecondlife.Packets
Throttle = new ThrottleBlock();
}
- public AgentThrottlePacket(byte[] bytes, ref int i)
+ public AgentThrottlePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Throttle = new ThrottleBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentThrottlePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Throttle.FromBytes(bytes, ref i);
+ }
+
+ public AgentThrottlePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Throttle = new ThrottleBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Throttle.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -10512,11 +12651,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
CircuitCode = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -10562,6 +12706,11 @@ namespace libsecondlife.Packets
public FOVBlockBlock() { }
public FOVBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -10612,19 +12761,40 @@ namespace libsecondlife.Packets
FOVBlock = new FOVBlockBlock();
}
- public AgentFOVPacket(byte[] bytes, ref int i)
+ public AgentFOVPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- FOVBlock = new FOVBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentFOVPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ FOVBlock.FromBytes(bytes, ref i);
+ }
+
+ public AgentFOVPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- FOVBlock = new FOVBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ FOVBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -10671,11 +12841,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
CircuitCode = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -10722,6 +12897,11 @@ namespace libsecondlife.Packets
public HeightWidthBlockBlock() { }
public HeightWidthBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -10773,19 +12953,40 @@ namespace libsecondlife.Packets
HeightWidthBlock = new HeightWidthBlockBlock();
}
- public AgentHeightWidthPacket(byte[] bytes, ref int i)
+ public AgentHeightWidthPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- HeightWidthBlock = new HeightWidthBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentHeightWidthPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ HeightWidthBlock.FromBytes(bytes, ref i);
+ }
+
+ public AgentHeightWidthPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- HeightWidthBlock = new HeightWidthBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ HeightWidthBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -10833,13 +13034,18 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
SerialNum = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- Size = new LLVector3(bytes, i); i += 12;
+ Size.FromBytes(bytes, i); i += 12;
}
catch (Exception)
{
@@ -10886,10 +13092,15 @@ namespace libsecondlife.Packets
public WearableDataBlock() { }
public WearableDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- CacheID = new LLUUID(bytes, i); i += 16;
+ CacheID.FromBytes(bytes, i); i += 16;
TextureIndex = (byte)bytes[i++];
}
catch (Exception)
@@ -10941,6 +13152,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -10987,6 +13203,11 @@ namespace libsecondlife.Packets
public VisualParamBlock() { }
public VisualParamBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -11031,35 +13252,68 @@ namespace libsecondlife.Packets
VisualParam = new VisualParamBlock[0];
}
- public AgentSetAppearancePacket(byte[] bytes, ref int i)
+ public AgentSetAppearancePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- WearableData = new WearableDataBlock[count];
- for (int j = 0; j < count; j++)
- { WearableData[j] = new WearableDataBlock(bytes, ref i); }
- ObjectData = new ObjectDataBlock(bytes, ref i);
- count = (int)bytes[i++];
- VisualParam = new VisualParamBlock[count];
- for (int j = 0; j < count; j++)
- { VisualParam[j] = new VisualParamBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentSetAppearancePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(WearableData.Length < count) {
+ WearableData = new WearableDataBlock[count];
+ for(int j = 0; j < count; j++) WearableData[j] = new WearableDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { WearableData[j].FromBytes(bytes, ref i); }
+ ObjectData.FromBytes(bytes, ref i);
+ count = (int)bytes[i++];
+ if(VisualParam.Length < count) {
+ VisualParam = new VisualParamBlock[count];
+ for(int j = 0; j < count; j++) VisualParam[j] = new VisualParamBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { VisualParam[j].FromBytes(bytes, ref i); }
+ }
+
+ public AgentSetAppearancePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- WearableData = new WearableDataBlock[count];
+ if(WearableData.Length < count) {
+ WearableData = new WearableDataBlock[count];
+ for(int j = 0; j < count; j++) WearableData[j] = new WearableDataBlock();
+ }
for (int j = 0; j < count; j++)
- { WearableData[j] = new WearableDataBlock(bytes, ref i); }
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ { WearableData[j].FromBytes(bytes, ref i); }
+ ObjectData.FromBytes(bytes, ref i);
count = (int)bytes[i++];
- VisualParam = new VisualParamBlock[count];
+ if(VisualParam.Length < count) {
+ VisualParam = new VisualParamBlock[count];
+ for(int j = 0; j < count; j++) VisualParam[j] = new VisualParamBlock();
+ }
for (int j = 0; j < count; j++)
- { VisualParam[j] = new VisualParamBlock(bytes, ref i); }
+ { VisualParam[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -11121,11 +13375,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -11164,6 +13423,11 @@ namespace libsecondlife.Packets
public FuseBlockBlock() { }
public FuseBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -11207,19 +13471,40 @@ namespace libsecondlife.Packets
FuseBlock = new FuseBlockBlock();
}
- public AgentQuitCopyPacket(byte[] bytes, ref int i)
+ public AgentQuitCopyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- FuseBlock = new FuseBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentQuitCopyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ FuseBlock.FromBytes(bytes, ref i);
+ }
+
+ public AgentQuitCopyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- FuseBlock = new FuseBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ FuseBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -11264,10 +13549,15 @@ namespace libsecondlife.Packets
public ImageIDBlock() { }
public ImageIDBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -11302,17 +13592,38 @@ namespace libsecondlife.Packets
ImageID = new ImageIDBlock();
}
- public ImageNotInDatabasePacket(byte[] bytes, ref int i)
+ public ImageNotInDatabasePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- ImageID = new ImageIDBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ImageNotInDatabasePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ImageID.FromBytes(bytes, ref i);
+ }
+
+ public ImageNotInDatabasePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- ImageID = new ImageIDBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ImageID.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -11355,10 +13666,15 @@ namespace libsecondlife.Packets
public TextureDataBlock() { }
public TextureDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TextureID = new LLUUID(bytes, i); i += 16;
+ TextureID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -11393,17 +13709,38 @@ namespace libsecondlife.Packets
TextureData = new TextureDataBlock();
}
- public RebakeAvatarTexturesPacket(byte[] bytes, ref int i)
+ public RebakeAvatarTexturesPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- TextureData = new TextureDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RebakeAvatarTexturesPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TextureData.FromBytes(bytes, ref i);
+ }
+
+ public RebakeAvatarTexturesPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- TextureData = new TextureDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TextureData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -11448,11 +13785,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
AlwaysRun = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -11492,17 +13834,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public SetAlwaysRunPacket(byte[] bytes, ref int i)
+ public SetAlwaysRunPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public SetAlwaysRunPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public SetAlwaysRunPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -11547,11 +13910,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
Force = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -11593,6 +13961,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -11636,25 +14009,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectDeletePacket(byte[] bytes, ref int i)
+ public ObjectDeletePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectDeletePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectDeletePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -11707,12 +14107,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -11754,10 +14159,15 @@ namespace libsecondlife.Packets
public SharedDataBlock() { }
public SharedDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- Offset = new LLVector3(bytes, i); i += 12;
+ Offset.FromBytes(bytes, i); i += 12;
DuplicateFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -11800,6 +14210,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -11845,27 +14260,54 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectDuplicatePacket(byte[] bytes, ref int i)
+ public ObjectDuplicatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- SharedData = new SharedDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectDuplicatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ SharedData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectDuplicatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- SharedData = new SharedDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ SharedData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -11928,19 +14370,24 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
- RayStart = new LLVector3(bytes, i); i += 12;
- RayEnd = new LLVector3(bytes, i); i += 12;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
+ RayStart.FromBytes(bytes, i); i += 12;
+ RayEnd.FromBytes(bytes, i); i += 12;
BypassRaycast = (bytes[i++] != 0) ? (bool)true : (bool)false;
RayEndIsIntersection = (bytes[i++] != 0) ? (bool)true : (bool)false;
CopyCenters = (bytes[i++] != 0) ? (bool)true : (bool)false;
CopyRotates = (bytes[i++] != 0) ? (bool)true : (bool)false;
- RayTargetID = new LLUUID(bytes, i); i += 16;
+ RayTargetID.FromBytes(bytes, i); i += 16;
DuplicateFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -12001,6 +14448,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -12044,25 +14496,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectDuplicateOnRayPacket(byte[] bytes, ref int i)
+ public ObjectDuplicateOnRayPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectDuplicateOnRayPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectDuplicateOnRayPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -12114,11 +14593,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -12158,11 +14642,16 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
ObjectLocalID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- Scale = new LLVector3(bytes, i); i += 12;
+ Scale.FromBytes(bytes, i); i += 12;
}
catch (Exception)
{
@@ -12204,25 +14693,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectScalePacket(byte[] bytes, ref int i)
+ public ObjectScalePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectScalePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectScalePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -12274,11 +14790,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -12318,11 +14839,16 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
ObjectLocalID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- Rotation = new LLQuaternion(bytes, i, true); i += 12;
+ Rotation.FromBytes(bytes, i, true); i += 12;
}
catch (Exception)
{
@@ -12364,25 +14890,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectRotationPacket(byte[] bytes, ref int i)
+ public ObjectRotationPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectRotationPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectRotationPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -12439,11 +14992,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
ObjectLocalID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
UsePhysics = (bytes[i++] != 0) ? (bool)true : (bool)false;
IsTemporary = (bytes[i++] != 0) ? (bool)true : (bool)false;
@@ -12498,17 +15056,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public ObjectFlagUpdatePacket(byte[] bytes, ref int i)
+ public ObjectFlagUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectFlagUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public ObjectFlagUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -12552,11 +15131,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -12596,6 +15180,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -12642,25 +15231,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectClickActionPacket(byte[] bytes, ref int i)
+ public ObjectClickActionPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectClickActionPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectClickActionPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -12712,11 +15328,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -12780,6 +15401,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -12840,25 +15466,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectImagePacket(byte[] bytes, ref int i)
+ public ObjectImagePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectImagePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectImagePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -12910,11 +15563,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -12954,6 +15612,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -13000,25 +15663,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectMaterialPacket(byte[] bytes, ref int i)
+ public ObjectMaterialPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectMaterialPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectMaterialPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -13070,11 +15760,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -13131,6 +15826,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -13233,25 +15933,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectShapePacket(byte[] bytes, ref int i)
+ public ObjectShapePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectShapePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectShapePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -13303,11 +16030,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -13362,6 +16094,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -13426,25 +16163,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectExtraParamsPacket(byte[] bytes, ref int i)
+ public ObjectExtraParamsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectExtraParamsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectExtraParamsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -13496,11 +16260,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -13541,12 +16310,17 @@ namespace libsecondlife.Packets
public HeaderDataBlock() { }
public HeaderDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
Override = (bytes[i++] != 0) ? (bool)true : (bool)false;
- OwnerID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -13587,6 +16361,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -13632,27 +16411,54 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectOwnerPacket(byte[] bytes, ref int i)
+ public ObjectOwnerPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- HeaderData = new HeaderDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectOwnerPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ HeaderData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectOwnerPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- HeaderData = new HeaderDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ HeaderData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -13707,12 +16513,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -13753,6 +16564,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -13796,25 +16612,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectGroupPacket(byte[] bytes, ref int i)
+ public ObjectGroupPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectGroupPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectGroupPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -13868,13 +16711,18 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
- CategoryID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
+ CategoryID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -13919,6 +16767,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -13971,25 +16824,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectBuyPacket(byte[] bytes, ref int i)
+ public ObjectBuyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectBuyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectBuyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -14041,11 +16921,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -14086,12 +16971,17 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
- ItemID = new LLUUID(bytes, i); i += 16;
- FolderID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -14132,19 +17022,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public BuyObjectInventoryPacket(byte[] bytes, ref int i)
+ public BuyObjectInventoryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public BuyObjectInventoryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public BuyObjectInventoryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -14190,10 +17101,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
Delete = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -14231,17 +17147,38 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public DerezContainerPacket(byte[] bytes, ref int i)
+ public DerezContainerPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DerezContainerPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public DerezContainerPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -14285,11 +17222,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -14328,6 +17270,11 @@ namespace libsecondlife.Packets
public HeaderDataBlock() { }
public HeaderDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -14371,6 +17318,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -14428,27 +17380,54 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectPermissionsPacket(byte[] bytes, ref int i)
+ public ObjectPermissionsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- HeaderData = new HeaderDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectPermissionsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ HeaderData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectPermissionsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- HeaderData = new HeaderDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ HeaderData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -14502,11 +17481,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -14547,6 +17531,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -14599,25 +17588,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectSaleInfoPacket(byte[] bytes, ref int i)
+ public ObjectSaleInfoPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectSaleInfoPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectSaleInfoPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -14669,11 +17685,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -14725,6 +17746,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -14776,25 +17802,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectNamePacket(byte[] bytes, ref int i)
+ public ObjectNamePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectNamePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectNamePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -14846,11 +17899,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -14902,6 +17960,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -14953,25 +18016,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectDescriptionPacket(byte[] bytes, ref int i)
+ public ObjectDescriptionPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectDescriptionPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectDescriptionPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -15023,11 +18113,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -15067,6 +18162,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -15116,25 +18216,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectCategoryPacket(byte[] bytes, ref int i)
+ public ObjectCategoryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectCategoryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectCategoryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -15186,11 +18313,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -15229,6 +18361,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -15272,25 +18409,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectSelectPacket(byte[] bytes, ref int i)
+ public ObjectSelectPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectSelectPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectSelectPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -15342,11 +18506,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -15385,6 +18554,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -15428,25 +18602,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectDeselectPacket(byte[] bytes, ref int i)
+ public ObjectDeselectPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectDeselectPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectDeselectPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -15499,11 +18700,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
AttachmentPoint = (byte)bytes[i++];
}
catch (Exception)
@@ -15546,11 +18752,16 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
ObjectLocalID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- Rotation = new LLQuaternion(bytes, i, true); i += 12;
+ Rotation.FromBytes(bytes, i, true); i += 12;
}
catch (Exception)
{
@@ -15592,25 +18803,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectAttachPacket(byte[] bytes, ref int i)
+ public ObjectAttachPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectAttachPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectAttachPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -15662,11 +18900,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -15705,6 +18948,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -15748,25 +18996,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectDetachPacket(byte[] bytes, ref int i)
+ public ObjectDetachPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectDetachPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectDetachPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -15818,11 +19093,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -15861,6 +19141,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -15904,25 +19189,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectDropPacket(byte[] bytes, ref int i)
+ public ObjectDropPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectDropPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectDropPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -15974,11 +19286,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -16017,6 +19334,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -16060,25 +19382,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectLinkPacket(byte[] bytes, ref int i)
+ public ObjectLinkPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectLinkPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectLinkPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -16130,11 +19479,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -16173,6 +19527,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -16216,25 +19575,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectDelinkPacket(byte[] bytes, ref int i)
+ public ObjectDelinkPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectDelinkPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectDelinkPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -16286,11 +19672,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -16330,11 +19721,16 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
LocalID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- GrabOffset = new LLVector3(bytes, i); i += 12;
+ GrabOffset.FromBytes(bytes, i); i += 12;
}
catch (Exception)
{
@@ -16376,19 +19772,40 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock();
}
- public ObjectGrabPacket(byte[] bytes, ref int i)
+ public ObjectGrabPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectGrabPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
+ }
+
+ public ObjectGrabPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -16434,11 +19851,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -16480,12 +19902,17 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
- GrabOffsetInitial = new LLVector3(bytes, i); i += 12;
- GrabPosition = new LLVector3(bytes, i); i += 12;
+ ObjectID.FromBytes(bytes, i); i += 16;
+ GrabOffsetInitial.FromBytes(bytes, i); i += 12;
+ GrabPosition.FromBytes(bytes, i); i += 12;
TimeSinceLast = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -16532,19 +19959,40 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock();
}
- public ObjectGrabUpdatePacket(byte[] bytes, ref int i)
+ public ObjectGrabUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectGrabUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
+ }
+
+ public ObjectGrabUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -16590,11 +20038,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -16633,6 +20086,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -16676,19 +20134,40 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock();
}
- public ObjectDeGrabPacket(byte[] bytes, ref int i)
+ public ObjectDeGrabPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectDeGrabPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
+ }
+
+ public ObjectDeGrabPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -16734,11 +20213,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -16777,10 +20261,15 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -16817,19 +20306,40 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock();
}
- public ObjectSpinStartPacket(byte[] bytes, ref int i)
+ public ObjectSpinStartPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectSpinStartPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
+ }
+
+ public ObjectSpinStartPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -16875,11 +20385,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -16919,11 +20434,16 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
- Rotation = new LLQuaternion(bytes, i, true); i += 12;
+ ObjectID.FromBytes(bytes, i); i += 16;
+ Rotation.FromBytes(bytes, i, true); i += 12;
}
catch (Exception)
{
@@ -16962,19 +20482,40 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock();
}
- public ObjectSpinUpdatePacket(byte[] bytes, ref int i)
+ public ObjectSpinUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectSpinUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
+ }
+
+ public ObjectSpinUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -17020,11 +20561,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -17063,10 +20609,15 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -17103,19 +20654,40 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock();
}
- public ObjectSpinStopPacket(byte[] bytes, ref int i)
+ public ObjectSpinStopPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectSpinStopPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
+ }
+
+ public ObjectSpinStopPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -17162,11 +20734,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- RequestID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
VolumeDetail = (short)(bytes[i++] + (bytes[i++] << 8));
}
catch (Exception)
@@ -17209,10 +20786,15 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -17249,25 +20831,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectExportSelectedPacket(byte[] bytes, ref int i)
+ public ObjectExportSelectedPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectExportSelectedPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectExportSelectedPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -17319,11 +20928,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -17365,6 +20979,11 @@ namespace libsecondlife.Packets
public ModifyBlockBlock() { }
public ModifyBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -17425,6 +21044,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -17495,27 +21119,54 @@ namespace libsecondlife.Packets
ParcelData = new ParcelDataBlock[0];
}
- public ModifyLandPacket(byte[] bytes, ref int i)
+ public ModifyLandPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ModifyBlock = new ModifyBlockBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ParcelData = new ParcelDataBlock[count];
- for (int j = 0; j < count; j++)
- { ParcelData[j] = new ParcelDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ModifyLandPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ModifyBlock.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ParcelData.Length < count) {
+ ParcelData = new ParcelDataBlock[count];
+ for(int j = 0; j < count; j++) ParcelData[j] = new ParcelDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ParcelData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ModifyLandPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ModifyBlock = new ModifyBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ModifyBlock.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ParcelData = new ParcelDataBlock[count];
+ if(ParcelData.Length < count) {
+ ParcelData = new ParcelDataBlock[count];
+ for(int j = 0; j < count; j++) ParcelData[j] = new ParcelDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ParcelData[j] = new ParcelDataBlock(bytes, ref i); }
+ { ParcelData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -17569,11 +21220,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -17610,17 +21266,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public VelocityInterpolateOnPacket(byte[] bytes, ref int i)
+ public VelocityInterpolateOnPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public VelocityInterpolateOnPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public VelocityInterpolateOnPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -17664,11 +21341,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -17705,17 +21387,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public VelocityInterpolateOffPacket(byte[] bytes, ref int i)
+ public VelocityInterpolateOffPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public VelocityInterpolateOffPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public VelocityInterpolateOffPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -17759,11 +21462,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -17814,6 +21522,11 @@ namespace libsecondlife.Packets
public DataBlockBlock() { }
public DataBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -17859,19 +21572,40 @@ namespace libsecondlife.Packets
DataBlock = new DataBlockBlock();
}
- public StateSavePacket(byte[] bytes, ref int i)
+ public StateSavePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- DataBlock = new DataBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public StateSavePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ DataBlock.FromBytes(bytes, ref i);
+ }
+
+ public StateSavePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- DataBlock = new DataBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ DataBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -17917,6 +21651,11 @@ namespace libsecondlife.Packets
public AutosaveDataBlock() { }
public AutosaveDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -17964,17 +21703,38 @@ namespace libsecondlife.Packets
AutosaveData = new AutosaveDataBlock();
}
- public ReportAutosaveCrashPacket(byte[] bytes, ref int i)
+ public ReportAutosaveCrashPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AutosaveData = new AutosaveDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ReportAutosaveCrashPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AutosaveData.FromBytes(bytes, ref i);
+ }
+
+ public ReportAutosaveCrashPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AutosaveData = new AutosaveDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AutosaveData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -18018,11 +21778,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -18062,10 +21827,15 @@ namespace libsecondlife.Packets
public DataBlockBlock() { }
public DataBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TargetID = new LLUUID(bytes, i); i += 16;
+ TargetID.FromBytes(bytes, i); i += 16;
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -18108,19 +21878,40 @@ namespace libsecondlife.Packets
DataBlock = new DataBlockBlock();
}
- public SimWideDeletesPacket(byte[] bytes, ref int i)
+ public SimWideDeletesPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- DataBlock = new DataBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public SimWideDeletesPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ DataBlock.FromBytes(bytes, ref i);
+ }
+
+ public SimWideDeletesPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- DataBlock = new DataBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ DataBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -18166,11 +21957,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -18209,10 +22005,15 @@ namespace libsecondlife.Packets
public TargetDataBlock() { }
public TargetDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- PreyID = new LLUUID(bytes, i); i += 16;
+ PreyID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -18249,19 +22050,40 @@ namespace libsecondlife.Packets
TargetData = new TargetDataBlock();
}
- public TrackAgentPacket(byte[] bytes, ref int i)
+ public TrackAgentPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- TargetData = new TargetDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TrackAgentPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TargetData.FromBytes(bytes, ref i);
+ }
+
+ public TrackAgentPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- TargetData = new TargetDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TargetData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -18354,12 +22176,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
IP = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
StartTime = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
@@ -18481,6 +22308,11 @@ namespace libsecondlife.Packets
public DownloadTotalsBlock() { }
public DownloadTotalsBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -18539,6 +22371,11 @@ namespace libsecondlife.Packets
public NetStatsBlock() { }
public NetStatsBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -18605,6 +22442,11 @@ namespace libsecondlife.Packets
public FailStatsBlock() { }
public FailStatsBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -18679,6 +22521,11 @@ namespace libsecondlife.Packets
public MiscStatsBlock() { }
public MiscStatsBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -18735,35 +22582,68 @@ namespace libsecondlife.Packets
MiscStats = new MiscStatsBlock[0];
}
- public ViewerStatsPacket(byte[] bytes, ref int i)
+ public ViewerStatsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- DownloadTotals = new DownloadTotalsBlock(bytes, ref i);
- NetStats = new NetStatsBlock[2];
- for (int j = 0; j < 2; j++)
- { NetStats[j] = new NetStatsBlock(bytes, ref i); }
- FailStats = new FailStatsBlock(bytes, ref i);
- int count = (int)bytes[i++];
- MiscStats = new MiscStatsBlock[count];
- for (int j = 0; j < count; j++)
- { MiscStats[j] = new MiscStatsBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ViewerStatsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ DownloadTotals.FromBytes(bytes, ref i);
+ if(NetStats.Length < 2) {
+ NetStats = new NetStatsBlock[2];
+ for(int j = 0; j < 2; j++) NetStats[j] = new NetStatsBlock();
+ }
+ for (int j = 0; j < 2; j++)
+ { NetStats[j].FromBytes(bytes, ref i); }
+ FailStats.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(MiscStats.Length < count) {
+ MiscStats = new MiscStatsBlock[count];
+ for(int j = 0; j < count; j++) MiscStats[j] = new MiscStatsBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { MiscStats[j].FromBytes(bytes, ref i); }
+ }
+
+ public ViewerStatsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- DownloadTotals = new DownloadTotalsBlock(bytes, ref i);
- NetStats = new NetStatsBlock[2];
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ DownloadTotals.FromBytes(bytes, ref i);
+ if(NetStats.Length < 2) {
+ NetStats = new NetStatsBlock[2];
+ for(int j = 0; j < 2; j++) NetStats[j] = new NetStatsBlock();
+ }
for (int j = 0; j < 2; j++)
- { NetStats[j] = new NetStatsBlock(bytes, ref i); }
- FailStats = new FailStatsBlock(bytes, ref i);
+ { NetStats[j].FromBytes(bytes, ref i); }
+ FailStats.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- MiscStats = new MiscStatsBlock[count];
+ if(MiscStats.Length < count) {
+ MiscStats = new MiscStatsBlock[count];
+ for(int j = 0; j < count; j++) MiscStats[j] = new MiscStatsBlock();
+ }
for (int j = 0; j < count; j++)
- { MiscStats[j] = new MiscStatsBlock(bytes, ref i); }
+ { MiscStats[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -18825,11 +22705,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -18870,11 +22755,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TaskID = new LLUUID(bytes, i); i += 16;
- ItemID = new LLUUID(bytes, i); i += 16;
+ TaskID.FromBytes(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
Questions = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -18919,19 +22809,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ScriptAnswerYesPacket(byte[] bytes, ref int i)
+ public ScriptAnswerYesPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ScriptAnswerYesPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ScriptAnswerYesPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -18977,11 +22888,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -19076,21 +22992,26 @@ namespace libsecondlife.Packets
public ReportDataBlock() { }
public ReportDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
ReportType = (byte)bytes[i++];
Category = (byte)bytes[i++];
- Position = new LLVector3(bytes, i); i += 12;
+ Position.FromBytes(bytes, i); i += 12;
CheckFlags = (byte)bytes[i++];
- ScreenshotID = new LLUUID(bytes, i); i += 16;
- ObjectID = new LLUUID(bytes, i); i += 16;
- AbuserID = new LLUUID(bytes, i); i += 16;
+ ScreenshotID.FromBytes(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
+ AbuserID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_abuseregionname = new byte[length];
Buffer.BlockCopy(bytes, i, _abuseregionname, 0, length); i += length;
- AbuseRegionID = new LLUUID(bytes, i); i += 16;
+ AbuseRegionID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_summary = new byte[length];
Buffer.BlockCopy(bytes, i, _summary, 0, length); i += length;
@@ -19170,19 +23091,40 @@ namespace libsecondlife.Packets
ReportData = new ReportDataBlock();
}
- public UserReportPacket(byte[] bytes, ref int i)
+ public UserReportPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ReportData = new ReportDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UserReportPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ReportData.FromBytes(bytes, ref i);
+ }
+
+ public UserReportPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ReportData = new ReportDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ReportData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -19239,6 +23181,11 @@ namespace libsecondlife.Packets
public AlertDataBlock() { }
public AlertDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -19282,17 +23229,38 @@ namespace libsecondlife.Packets
AlertData = new AlertDataBlock();
}
- public AlertMessagePacket(byte[] bytes, ref int i)
+ public AlertMessagePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AlertData = new AlertDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AlertMessagePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AlertData.FromBytes(bytes, ref i);
+ }
+
+ public AlertMessagePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AlertData = new AlertDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AlertData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -19335,10 +23303,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -19388,6 +23361,11 @@ namespace libsecondlife.Packets
public AlertDataBlock() { }
public AlertDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -19436,19 +23414,40 @@ namespace libsecondlife.Packets
AlertData = new AlertDataBlock();
}
- public AgentAlertMessagePacket(byte[] bytes, ref int i)
+ public AgentAlertMessagePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- AlertData = new AlertDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentAlertMessagePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ AlertData.FromBytes(bytes, ref i);
+ }
+
+ public AgentAlertMessagePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- AlertData = new AlertDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ AlertData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -19497,11 +23496,16 @@ namespace libsecondlife.Packets
public MeanCollisionBlock() { }
public MeanCollisionBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- Victim = new LLUUID(bytes, i); i += 16;
- Perp = new LLUUID(bytes, i); i += 16;
+ Victim.FromBytes(bytes, i); i += 16;
+ Perp.FromBytes(bytes, i); i += 16;
Time = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
Mag = BitConverter.ToSingle(bytes, i); i += 4;
@@ -19554,23 +23558,50 @@ namespace libsecondlife.Packets
MeanCollision = new MeanCollisionBlock[0];
}
- public MeanCollisionAlertPacket(byte[] bytes, ref int i)
+ public MeanCollisionAlertPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- int count = (int)bytes[i++];
- MeanCollision = new MeanCollisionBlock[count];
- for (int j = 0; j < count; j++)
- { MeanCollision[j] = new MeanCollisionBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MeanCollisionAlertPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ int count = (int)bytes[i++];
+ if(MeanCollision.Length < count) {
+ MeanCollision = new MeanCollisionBlock[count];
+ for(int j = 0; j < count; j++) MeanCollision[j] = new MeanCollisionBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { MeanCollision[j].FromBytes(bytes, ref i); }
+ }
+
+ public MeanCollisionAlertPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
int count = (int)bytes[i++];
- MeanCollision = new MeanCollisionBlock[count];
+ if(MeanCollision.Length < count) {
+ MeanCollision = new MeanCollisionBlock[count];
+ for(int j = 0; j < count; j++) MeanCollision[j] = new MeanCollisionBlock();
+ }
for (int j = 0; j < count; j++)
- { MeanCollision[j] = new MeanCollisionBlock(bytes, ref i); }
+ { MeanCollision[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -19619,6 +23650,11 @@ namespace libsecondlife.Packets
public FrozenDataBlock() { }
public FrozenDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -19657,17 +23693,38 @@ namespace libsecondlife.Packets
FrozenData = new FrozenDataBlock();
}
- public ViewerFrozenMessagePacket(byte[] bytes, ref int i)
+ public ViewerFrozenMessagePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- FrozenData = new FrozenDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ViewerFrozenMessagePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ FrozenData.FromBytes(bytes, ref i);
+ }
+
+ public ViewerFrozenMessagePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- FrozenData = new FrozenDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ FrozenData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -19710,6 +23767,11 @@ namespace libsecondlife.Packets
public HealthDataBlock() { }
public HealthDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -19752,17 +23814,38 @@ namespace libsecondlife.Packets
HealthData = new HealthDataBlock();
}
- public HealthMessagePacket(byte[] bytes, ref int i)
+ public HealthMessagePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- HealthData = new HealthDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public HealthMessagePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ HealthData.FromBytes(bytes, ref i);
+ }
+
+ public HealthMessagePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- HealthData = new HealthDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ HealthData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -19835,6 +23918,11 @@ namespace libsecondlife.Packets
public ChatDataBlock() { }
public ChatDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -19842,12 +23930,12 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_fromname = new byte[length];
Buffer.BlockCopy(bytes, i, _fromname, 0, length); i += length;
- SourceID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
+ SourceID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
SourceType = (byte)bytes[i++];
ChatType = (byte)bytes[i++];
Audible = (byte)bytes[i++];
- Position = new LLVector3(bytes, i); i += 12;
+ Position.FromBytes(bytes, i); i += 12;
length = (ushort)(bytes[i++] + (bytes[i++] << 8));
_message = new byte[length];
Buffer.BlockCopy(bytes, i, _message, 0, length); i += length;
@@ -19905,17 +23993,38 @@ namespace libsecondlife.Packets
ChatData = new ChatDataBlock();
}
- public ChatFromSimulatorPacket(byte[] bytes, ref int i)
+ public ChatFromSimulatorPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- ChatData = new ChatDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ChatFromSimulatorPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ChatData.FromBytes(bytes, ref i);
+ }
+
+ public ChatFromSimulatorPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- ChatData = new ChatDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ChatData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -19961,6 +24070,11 @@ namespace libsecondlife.Packets
public RegionBlock() { }
public RegionBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -20023,6 +24137,11 @@ namespace libsecondlife.Packets
public StatBlock() { }
public StatBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -20073,25 +24192,52 @@ namespace libsecondlife.Packets
Stat = new StatBlock[0];
}
- public SimStatsPacket(byte[] bytes, ref int i)
+ public SimStatsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Region = new RegionBlock(bytes, ref i);
- int count = (int)bytes[i++];
- Stat = new StatBlock[count];
- for (int j = 0; j < count; j++)
- { Stat[j] = new StatBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public SimStatsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Region.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(Stat.Length < count) {
+ Stat = new StatBlock[count];
+ for(int j = 0; j < count; j++) Stat[j] = new StatBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Stat[j].FromBytes(bytes, ref i); }
+ }
+
+ public SimStatsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Region = new RegionBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Region.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- Stat = new StatBlock[count];
+ if(Stat.Length < count) {
+ Stat = new StatBlock[count];
+ for(int j = 0; j < count; j++) Stat[j] = new StatBlock();
+ }
for (int j = 0; j < count; j++)
- { Stat[j] = new StatBlock(bytes, ref i); }
+ { Stat[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -20143,11 +24289,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -20184,17 +24335,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public RequestRegionInfoPacket(byte[] bytes, ref int i)
+ public RequestRegionInfoPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RequestRegionInfoPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public RequestRegionInfoPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -20238,11 +24410,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -20308,6 +24485,11 @@ namespace libsecondlife.Packets
public RegionInfoBlock() { }
public RegionInfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -20436,19 +24618,40 @@ namespace libsecondlife.Packets
RegionInfo = new RegionInfoBlock();
}
- public RegionInfoPacket(byte[] bytes, ref int i)
+ public RegionInfoPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- RegionInfo = new RegionInfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RegionInfoPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RegionInfo.FromBytes(bytes, ref i);
+ }
+
+ public RegionInfoPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- RegionInfo = new RegionInfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RegionInfo.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -20494,11 +24697,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -20556,6 +24764,11 @@ namespace libsecondlife.Packets
public RegionInfoBlock() { }
public RegionInfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -20645,19 +24858,40 @@ namespace libsecondlife.Packets
RegionInfo = new RegionInfoBlock();
}
- public GodUpdateRegionInfoPacket(byte[] bytes, ref int i)
+ public GodUpdateRegionInfoPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- RegionInfo = new RegionInfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GodUpdateRegionInfoPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RegionInfo.FromBytes(bytes, ref i);
+ }
+
+ public GodUpdateRegionInfoPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- RegionInfo = new RegionInfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RegionInfo.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -20702,6 +24936,11 @@ namespace libsecondlife.Packets
public RegionDataBlock() { }
public RegionDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -20747,17 +24986,38 @@ namespace libsecondlife.Packets
RegionData = new RegionDataBlock();
}
- public NearestLandingRegionUpdatedPacket(byte[] bytes, ref int i)
+ public NearestLandingRegionUpdatedPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- RegionData = new RegionDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public NearestLandingRegionUpdatedPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RegionData.FromBytes(bytes, ref i);
+ }
+
+ public NearestLandingRegionUpdatedPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- RegionData = new RegionDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RegionData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -20835,6 +25095,11 @@ namespace libsecondlife.Packets
public RegionInfoBlock() { }
public RegionInfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -20844,21 +25109,21 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_simname = new byte[length];
Buffer.BlockCopy(bytes, i, _simname, 0, length); i += length;
- SimOwner = new LLUUID(bytes, i); i += 16;
+ SimOwner.FromBytes(bytes, i); i += 16;
IsEstateManager = (bytes[i++] != 0) ? (bool)true : (bool)false;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
WaterHeight = BitConverter.ToSingle(bytes, i); i += 4;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
BillableFactor = BitConverter.ToSingle(bytes, i); i += 4;
- CacheID = new LLUUID(bytes, i); i += 16;
- TerrainBase0 = new LLUUID(bytes, i); i += 16;
- TerrainBase1 = new LLUUID(bytes, i); i += 16;
- TerrainBase2 = new LLUUID(bytes, i); i += 16;
- TerrainBase3 = new LLUUID(bytes, i); i += 16;
- TerrainDetail0 = new LLUUID(bytes, i); i += 16;
- TerrainDetail1 = new LLUUID(bytes, i); i += 16;
- TerrainDetail2 = new LLUUID(bytes, i); i += 16;
- TerrainDetail3 = new LLUUID(bytes, i); i += 16;
+ CacheID.FromBytes(bytes, i); i += 16;
+ TerrainBase0.FromBytes(bytes, i); i += 16;
+ TerrainBase1.FromBytes(bytes, i); i += 16;
+ TerrainBase2.FromBytes(bytes, i); i += 16;
+ TerrainBase3.FromBytes(bytes, i); i += 16;
+ TerrainDetail0.FromBytes(bytes, i); i += 16;
+ TerrainDetail1.FromBytes(bytes, i); i += 16;
+ TerrainDetail2.FromBytes(bytes, i); i += 16;
+ TerrainDetail3.FromBytes(bytes, i); i += 16;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
TerrainStartHeight00 = BitConverter.ToSingle(bytes, i); i += 4;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
@@ -20984,10 +25249,15 @@ namespace libsecondlife.Packets
public RegionInfo2Block() { }
public RegionInfo2Block(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- RegionID = new LLUUID(bytes, i); i += 16;
+ RegionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -21024,19 +25294,40 @@ namespace libsecondlife.Packets
RegionInfo2 = new RegionInfo2Block();
}
- public RegionHandshakePacket(byte[] bytes, ref int i)
+ public RegionHandshakePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- RegionInfo = new RegionInfoBlock(bytes, ref i);
- RegionInfo2 = new RegionInfo2Block(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RegionHandshakePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RegionInfo.FromBytes(bytes, ref i);
+ RegionInfo2.FromBytes(bytes, ref i);
+ }
+
+ public RegionHandshakePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- RegionInfo = new RegionInfoBlock(bytes, ref i);
- RegionInfo2 = new RegionInfo2Block(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RegionInfo.FromBytes(bytes, ref i);
+ RegionInfo2.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -21082,11 +25373,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -21125,6 +25421,11 @@ namespace libsecondlife.Packets
public RegionInfoBlock() { }
public RegionInfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -21168,19 +25469,40 @@ namespace libsecondlife.Packets
RegionInfo = new RegionInfoBlock();
}
- public RegionHandshakeReplyPacket(byte[] bytes, ref int i)
+ public RegionHandshakeReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- RegionInfo = new RegionInfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RegionHandshakeReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RegionInfo.FromBytes(bytes, ref i);
+ }
+
+ public RegionHandshakeReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- RegionInfo = new RegionInfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RegionInfo.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -21230,16 +25552,21 @@ namespace libsecondlife.Packets
public TimeInfoBlock() { }
public TimeInfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
UsecSinceStart = (ulong)((ulong)bytes[i++] + ((ulong)bytes[i++] << 8) + ((ulong)bytes[i++] << 16) + ((ulong)bytes[i++] << 24) + ((ulong)bytes[i++] << 32) + ((ulong)bytes[i++] << 40) + ((ulong)bytes[i++] << 48) + ((ulong)bytes[i++] << 56));
SecPerDay = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
SecPerYear = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- SunDirection = new LLVector3(bytes, i); i += 12;
+ SunDirection.FromBytes(bytes, i); i += 12;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
SunPhase = BitConverter.ToSingle(bytes, i); i += 4;
- SunAngVelocity = new LLVector3(bytes, i); i += 12;
+ SunAngVelocity.FromBytes(bytes, i); i += 12;
}
catch (Exception)
{
@@ -21300,17 +25627,38 @@ namespace libsecondlife.Packets
TimeInfo = new TimeInfoBlock();
}
- public SimulatorViewerTimeMessagePacket(byte[] bytes, ref int i)
+ public SimulatorViewerTimeMessagePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- TimeInfo = new TimeInfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public SimulatorViewerTimeMessagePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TimeInfo.FromBytes(bytes, ref i);
+ }
+
+ public SimulatorViewerTimeMessagePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- TimeInfo = new TimeInfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TimeInfo.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -21355,6 +25703,11 @@ namespace libsecondlife.Packets
public SimulatorInfoBlock() { }
public SimulatorInfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -21410,17 +25763,38 @@ namespace libsecondlife.Packets
SimulatorInfo = new SimulatorInfoBlock();
}
- public EnableSimulatorPacket(byte[] bytes, ref int i)
+ public EnableSimulatorPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- SimulatorInfo = new SimulatorInfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public EnableSimulatorPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ SimulatorInfo.FromBytes(bytes, ref i);
+ }
+
+ public EnableSimulatorPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- SimulatorInfo = new SimulatorInfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ SimulatorInfo.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -21459,15 +25833,36 @@ namespace libsecondlife.Packets
Header.Reliable = true;
}
- public DisableSimulatorPacket(byte[] bytes, ref int i)
+ public DisableSimulatorPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DisableSimulatorPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ }
+
+ public DisableSimulatorPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
}
public override byte[] ToBytes()
@@ -21524,11 +25919,16 @@ namespace libsecondlife.Packets
public TransferInfoBlock() { }
public TransferInfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- TransferID = new LLUUID(bytes, i); i += 16;
+ TransferID.FromBytes(bytes, i); i += 16;
ChannelType = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
SourceType = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
@@ -21590,17 +25990,38 @@ namespace libsecondlife.Packets
TransferInfo = new TransferInfoBlock();
}
- public TransferRequestPacket(byte[] bytes, ref int i)
+ public TransferRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- TransferInfo = new TransferInfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TransferRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TransferInfo.FromBytes(bytes, ref i);
+ }
+
+ public TransferRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- TransferInfo = new TransferInfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TransferInfo.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -21660,11 +26081,16 @@ namespace libsecondlife.Packets
public TransferInfoBlock() { }
public TransferInfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- TransferID = new LLUUID(bytes, i); i += 16;
+ TransferID.FromBytes(bytes, i); i += 16;
ChannelType = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
TargetType = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Status = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -21731,17 +26157,38 @@ namespace libsecondlife.Packets
TransferInfo = new TransferInfoBlock();
}
- public TransferInfoPacket(byte[] bytes, ref int i)
+ public TransferInfoPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- TransferInfo = new TransferInfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TransferInfoPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TransferInfo.FromBytes(bytes, ref i);
+ }
+
+ public TransferInfoPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- TransferInfo = new TransferInfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TransferInfo.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -21785,10 +26232,15 @@ namespace libsecondlife.Packets
public TransferInfoBlock() { }
public TransferInfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TransferID = new LLUUID(bytes, i); i += 16;
+ TransferID.FromBytes(bytes, i); i += 16;
ChannelType = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -21829,17 +26281,38 @@ namespace libsecondlife.Packets
TransferInfo = new TransferInfoBlock();
}
- public TransferAbortPacket(byte[] bytes, ref int i)
+ public TransferAbortPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- TransferInfo = new TransferInfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TransferAbortPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TransferInfo.FromBytes(bytes, ref i);
+ }
+
+ public TransferAbortPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- TransferInfo = new TransferInfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TransferInfo.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -21900,6 +26373,11 @@ namespace libsecondlife.Packets
public XferIDBlock() { }
public XferIDBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -21911,7 +26389,7 @@ namespace libsecondlife.Packets
FilePath = (byte)bytes[i++];
DeleteOnCompletion = (bytes[i++] != 0) ? (bool)true : (bool)false;
UseBigPackets = (bytes[i++] != 0) ? (bool)true : (bool)false;
- VFileID = new LLUUID(bytes, i); i += 16;
+ VFileID.FromBytes(bytes, i); i += 16;
VFileType = (short)(bytes[i++] + (bytes[i++] << 8));
}
catch (Exception)
@@ -21970,17 +26448,38 @@ namespace libsecondlife.Packets
XferID = new XferIDBlock();
}
- public RequestXferPacket(byte[] bytes, ref int i)
+ public RequestXferPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- XferID = new XferIDBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RequestXferPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ XferID.FromBytes(bytes, ref i);
+ }
+
+ public RequestXferPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- XferID = new XferIDBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ XferID.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -22024,6 +26523,11 @@ namespace libsecondlife.Packets
public XferIDBlock() { }
public XferIDBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -22075,17 +26579,38 @@ namespace libsecondlife.Packets
XferID = new XferIDBlock();
}
- public AbortXferPacket(byte[] bytes, ref int i)
+ public AbortXferPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- XferID = new XferIDBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AbortXferPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ XferID.FromBytes(bytes, ref i);
+ }
+
+ public AbortXferPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- XferID = new XferIDBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ XferID.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -22129,10 +26654,15 @@ namespace libsecondlife.Packets
public SenderBlock() { }
public SenderBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
IsTrial = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -22184,6 +26714,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -22230,6 +26765,11 @@ namespace libsecondlife.Packets
public VisualParamBlock() { }
public VisualParamBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -22272,27 +26812,54 @@ namespace libsecondlife.Packets
VisualParam = new VisualParamBlock[0];
}
- public AvatarAppearancePacket(byte[] bytes, ref int i)
+ public AvatarAppearancePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Sender = new SenderBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- VisualParam = new VisualParamBlock[count];
- for (int j = 0; j < count; j++)
- { VisualParam[j] = new VisualParamBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AvatarAppearancePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Sender.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(VisualParam.Length < count) {
+ VisualParam = new VisualParamBlock[count];
+ for(int j = 0; j < count; j++) VisualParam[j] = new VisualParamBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { VisualParam[j].FromBytes(bytes, ref i); }
+ }
+
+ public AvatarAppearancePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Sender = new SenderBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Sender.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- VisualParam = new VisualParamBlock[count];
+ if(VisualParam.Length < count) {
+ VisualParam = new VisualParamBlock[count];
+ for(int j = 0; j < count; j++) VisualParam[j] = new VisualParamBlock();
+ }
for (int j = 0; j < count; j++)
- { VisualParam[j] = new VisualParamBlock(bytes, ref i); }
+ { VisualParam[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -22345,10 +26912,15 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -22386,6 +26958,11 @@ namespace libsecondlife.Packets
public CameraPropertyBlock() { }
public CameraPropertyBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -22436,25 +27013,52 @@ namespace libsecondlife.Packets
CameraProperty = new CameraPropertyBlock[0];
}
- public SetFollowCamPropertiesPacket(byte[] bytes, ref int i)
+ public SetFollowCamPropertiesPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- ObjectData = new ObjectDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- CameraProperty = new CameraPropertyBlock[count];
- for (int j = 0; j < count; j++)
- { CameraProperty[j] = new CameraPropertyBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public SetFollowCamPropertiesPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ObjectData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(CameraProperty.Length < count) {
+ CameraProperty = new CameraPropertyBlock[count];
+ for(int j = 0; j < count; j++) CameraProperty[j] = new CameraPropertyBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { CameraProperty[j].FromBytes(bytes, ref i); }
+ }
+
+ public SetFollowCamPropertiesPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ObjectData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- CameraProperty = new CameraPropertyBlock[count];
+ if(CameraProperty.Length < count) {
+ CameraProperty = new CameraPropertyBlock[count];
+ for(int j = 0; j < count; j++) CameraProperty[j] = new CameraPropertyBlock();
+ }
for (int j = 0; j < count; j++)
- { CameraProperty[j] = new CameraPropertyBlock(bytes, ref i); }
+ { CameraProperty[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -22505,10 +27109,15 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -22543,17 +27152,38 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock();
}
- public ClearFollowCamPropertiesPacket(byte[] bytes, ref int i)
+ public ClearFollowCamPropertiesPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ClearFollowCamPropertiesPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ObjectData.FromBytes(bytes, ref i);
+ }
+
+ public ClearFollowCamPropertiesPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ObjectData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -22596,10 +27226,15 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -22634,17 +27269,38 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock();
}
- public RequestPayPricePacket(byte[] bytes, ref int i)
+ public RequestPayPricePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RequestPayPricePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ObjectData.FromBytes(bytes, ref i);
+ }
+
+ public RequestPayPricePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ObjectData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -22688,10 +27344,15 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
DefaultPayPrice = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -22734,6 +27395,11 @@ namespace libsecondlife.Packets
public ButtonDataBlock() { }
public ButtonDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -22777,25 +27443,52 @@ namespace libsecondlife.Packets
ButtonData = new ButtonDataBlock[0];
}
- public PayPriceReplyPacket(byte[] bytes, ref int i)
+ public PayPriceReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- ObjectData = new ObjectDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ButtonData = new ButtonDataBlock[count];
- for (int j = 0; j < count; j++)
- { ButtonData[j] = new ButtonDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public PayPriceReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ObjectData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ButtonData.Length < count) {
+ ButtonData = new ButtonDataBlock[count];
+ for(int j = 0; j < count; j++) ButtonData[j] = new ButtonDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ButtonData[j].FromBytes(bytes, ref i); }
+ }
+
+ public PayPriceReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ObjectData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ButtonData = new ButtonDataBlock[count];
+ if(ButtonData.Length < count) {
+ ButtonData = new ButtonDataBlock[count];
+ for(int j = 0; j < count; j++) ButtonData[j] = new ButtonDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ButtonData[j] = new ButtonDataBlock(bytes, ref i); }
+ { ButtonData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -22847,6 +27540,11 @@ namespace libsecondlife.Packets
public TargetBlockBlock() { }
public TargetBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -22908,12 +27606,17 @@ namespace libsecondlife.Packets
public UserInfoBlock() { }
public UserInfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
length = (ushort)(bytes[i++] + (bytes[i++] << 8));
_reason = new byte[length];
Buffer.BlockCopy(bytes, i, _reason, 0, length); i += length;
@@ -22960,19 +27663,40 @@ namespace libsecondlife.Packets
UserInfo = new UserInfoBlock();
}
- public KickUserPacket(byte[] bytes, ref int i)
+ public KickUserPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- TargetBlock = new TargetBlockBlock(bytes, ref i);
- UserInfo = new UserInfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public KickUserPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TargetBlock.FromBytes(bytes, ref i);
+ UserInfo.FromBytes(bytes, ref i);
+ }
+
+ public KickUserPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- TargetBlock = new TargetBlockBlock(bytes, ref i);
- UserInfo = new UserInfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TargetBlock.FromBytes(bytes, ref i);
+ UserInfo.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -23018,10 +27742,15 @@ namespace libsecondlife.Packets
public UserInfoBlock() { }
public UserInfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- SessionID = new LLUUID(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -23062,17 +27791,38 @@ namespace libsecondlife.Packets
UserInfo = new UserInfoBlock();
}
- public KickUserAckPacket(byte[] bytes, ref int i)
+ public KickUserAckPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- UserInfo = new UserInfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public KickUserAckPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ UserInfo.FromBytes(bytes, ref i);
+ }
+
+ public KickUserAckPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- UserInfo = new UserInfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ UserInfo.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -23131,13 +27881,18 @@ namespace libsecondlife.Packets
public UserInfoBlock() { }
public UserInfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- GodID = new LLUUID(bytes, i); i += 16;
- GodSessionID = new LLUUID(bytes, i); i += 16;
- AgentID = new LLUUID(bytes, i); i += 16;
+ GodID.FromBytes(bytes, i); i += 16;
+ GodSessionID.FromBytes(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
KickFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
length = (ushort)(bytes[i++] + (bytes[i++] << 8));
_reason = new byte[length];
@@ -23190,17 +27945,38 @@ namespace libsecondlife.Packets
UserInfo = new UserInfoBlock();
}
- public GodKickUserPacket(byte[] bytes, ref int i)
+ public GodKickUserPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- UserInfo = new UserInfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GodKickUserPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ UserInfo.FromBytes(bytes, ref i);
+ }
+
+ public GodKickUserPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- UserInfo = new UserInfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ UserInfo.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -23244,11 +28020,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -23288,10 +28069,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TargetID = new LLUUID(bytes, i); i += 16;
+ TargetID.FromBytes(bytes, i); i += 16;
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -23334,19 +28120,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public EjectUserPacket(byte[] bytes, ref int i)
+ public EjectUserPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public EjectUserPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public EjectUserPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -23392,11 +28199,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -23436,10 +28248,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TargetID = new LLUUID(bytes, i); i += 16;
+ TargetID.FromBytes(bytes, i); i += 16;
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -23482,19 +28299,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public FreezeUserPacket(byte[] bytes, ref int i)
+ public FreezeUserPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public FreezeUserPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public FreezeUserPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -23541,12 +28379,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- AvatarID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ AvatarID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -23585,17 +28428,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public AvatarPropertiesRequestPacket(byte[] bytes, ref int i)
+ public AvatarPropertiesRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AvatarPropertiesRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public AvatarPropertiesRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -23639,11 +28503,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- AvatarID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ AvatarID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -23746,13 +28615,18 @@ namespace libsecondlife.Packets
public PropertiesDataBlock() { }
public PropertiesDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ImageID = new LLUUID(bytes, i); i += 16;
- FLImageID = new LLUUID(bytes, i); i += 16;
- PartnerID = new LLUUID(bytes, i); i += 16;
+ ImageID.FromBytes(bytes, i); i += 16;
+ FLImageID.FromBytes(bytes, i); i += 16;
+ PartnerID.FromBytes(bytes, i); i += 16;
length = (ushort)(bytes[i++] + (bytes[i++] << 8));
_abouttext = new byte[length];
Buffer.BlockCopy(bytes, i, _abouttext, 0, length); i += length;
@@ -23840,19 +28714,40 @@ namespace libsecondlife.Packets
PropertiesData = new PropertiesDataBlock();
}
- public AvatarPropertiesReplyPacket(byte[] bytes, ref int i)
+ public AvatarPropertiesReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- PropertiesData = new PropertiesDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AvatarPropertiesReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ PropertiesData.FromBytes(bytes, ref i);
+ }
+
+ public AvatarPropertiesReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- PropertiesData = new PropertiesDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ PropertiesData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -23898,11 +28793,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- AvatarID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ AvatarID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -23979,6 +28879,11 @@ namespace libsecondlife.Packets
public PropertiesDataBlock() { }
public PropertiesDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -24052,19 +28957,40 @@ namespace libsecondlife.Packets
PropertiesData = new PropertiesDataBlock();
}
- public AvatarInterestsReplyPacket(byte[] bytes, ref int i)
+ public AvatarInterestsReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- PropertiesData = new PropertiesDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AvatarInterestsReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ PropertiesData.FromBytes(bytes, ref i);
+ }
+
+ public AvatarInterestsReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- PropertiesData = new PropertiesDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ PropertiesData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -24110,11 +29036,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- AvatarID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ AvatarID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -24181,6 +29112,11 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -24190,11 +29126,11 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_grouptitle = new byte[length];
Buffer.BlockCopy(bytes, i, _grouptitle, 0, length); i += length;
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_groupname = new byte[length];
Buffer.BlockCopy(bytes, i, _groupname, 0, length); i += length;
- GroupInsigniaID = new LLUUID(bytes, i); i += 16;
+ GroupInsigniaID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -24254,25 +29190,52 @@ namespace libsecondlife.Packets
GroupData = new GroupDataBlock[0];
}
- public AvatarGroupsReplyPacket(byte[] bytes, ref int i)
+ public AvatarGroupsReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- GroupData = new GroupDataBlock[count];
- for (int j = 0; j < count; j++)
- { GroupData[j] = new GroupDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AvatarGroupsReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(GroupData.Length < count) {
+ GroupData = new GroupDataBlock[count];
+ for(int j = 0; j < count; j++) GroupData[j] = new GroupDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { GroupData[j].FromBytes(bytes, ref i); }
+ }
+
+ public AvatarGroupsReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- GroupData = new GroupDataBlock[count];
+ if(GroupData.Length < count) {
+ GroupData = new GroupDataBlock[count];
+ for(int j = 0; j < count; j++) GroupData[j] = new GroupDataBlock();
+ }
for (int j = 0; j < count; j++)
- { GroupData[j] = new GroupDataBlock(bytes, ref i); }
+ { GroupData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -24324,11 +29287,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -24407,12 +29375,17 @@ namespace libsecondlife.Packets
public PropertiesDataBlock() { }
public PropertiesDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ImageID = new LLUUID(bytes, i); i += 16;
- FLImageID = new LLUUID(bytes, i); i += 16;
+ ImageID.FromBytes(bytes, i); i += 16;
+ FLImageID.FromBytes(bytes, i); i += 16;
length = (ushort)(bytes[i++] + (bytes[i++] << 8));
_abouttext = new byte[length];
Buffer.BlockCopy(bytes, i, _abouttext, 0, length); i += length;
@@ -24481,19 +29454,40 @@ namespace libsecondlife.Packets
PropertiesData = new PropertiesDataBlock();
}
- public AvatarPropertiesUpdatePacket(byte[] bytes, ref int i)
+ public AvatarPropertiesUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- PropertiesData = new PropertiesDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AvatarPropertiesUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ PropertiesData.FromBytes(bytes, ref i);
+ }
+
+ public AvatarPropertiesUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- PropertiesData = new PropertiesDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ PropertiesData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -24539,11 +29533,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -24620,6 +29619,11 @@ namespace libsecondlife.Packets
public PropertiesDataBlock() { }
public PropertiesDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -24693,19 +29697,40 @@ namespace libsecondlife.Packets
PropertiesData = new PropertiesDataBlock();
}
- public AvatarInterestsUpdatePacket(byte[] bytes, ref int i)
+ public AvatarInterestsUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- PropertiesData = new PropertiesDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AvatarInterestsUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ PropertiesData.FromBytes(bytes, ref i);
+ }
+
+ public AvatarInterestsUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- PropertiesData = new PropertiesDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ PropertiesData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -24750,10 +29775,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -24803,11 +29833,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- TargetID = new LLUUID(bytes, i); i += 16;
+ TargetID.FromBytes(bytes, i); i += 16;
length = (ushort)(bytes[i++] + (bytes[i++] << 8));
_notes = new byte[length];
Buffer.BlockCopy(bytes, i, _notes, 0, length); i += length;
@@ -24852,19 +29887,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public AvatarNotesReplyPacket(byte[] bytes, ref int i)
+ public AvatarNotesReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AvatarNotesReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public AvatarNotesReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -24910,11 +29966,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -24966,11 +30027,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- TargetID = new LLUUID(bytes, i); i += 16;
+ TargetID.FromBytes(bytes, i); i += 16;
length = (ushort)(bytes[i++] + (bytes[i++] << 8));
_notes = new byte[length];
Buffer.BlockCopy(bytes, i, _notes, 0, length); i += length;
@@ -25015,19 +30081,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public AvatarNotesUpdatePacket(byte[] bytes, ref int i)
+ public AvatarNotesUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AvatarNotesUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public AvatarNotesUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -25073,11 +30160,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- TargetID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ TargetID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -25129,11 +30221,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- PickID = new LLUUID(bytes, i); i += 16;
+ PickID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_pickname = new byte[length];
Buffer.BlockCopy(bytes, i, _pickname, 0, length); i += length;
@@ -25177,25 +30274,52 @@ namespace libsecondlife.Packets
Data = new DataBlock[0];
}
- public AvatarPicksReplyPacket(byte[] bytes, ref int i)
+ public AvatarPicksReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- Data = new DataBlock[count];
- for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AvatarPicksReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Data[j].FromBytes(bytes, ref i); }
+ }
+
+ public AvatarPicksReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- Data = new DataBlock[count];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ { Data[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -25247,11 +30371,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -25290,6 +30419,11 @@ namespace libsecondlife.Packets
public EventDataBlock() { }
public EventDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -25333,19 +30467,40 @@ namespace libsecondlife.Packets
EventData = new EventDataBlock();
}
- public EventInfoRequestPacket(byte[] bytes, ref int i)
+ public EventInfoRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- EventData = new EventDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public EventInfoRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ EventData.FromBytes(bytes, ref i);
+ }
+
+ public EventInfoRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- EventData = new EventDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ EventData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -25390,10 +30545,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -25509,6 +30669,11 @@ namespace libsecondlife.Packets
public EventDataBlock() { }
public EventDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -25536,7 +30701,7 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_simname = new byte[length];
Buffer.BlockCopy(bytes, i, _simname, 0, length); i += length;
- GlobalPos = new LLVector3d(bytes, i); i += 24;
+ GlobalPos.FromBytes(bytes, i); i += 24;
EventFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -25635,19 +30800,40 @@ namespace libsecondlife.Packets
EventData = new EventDataBlock();
}
- public EventInfoReplyPacket(byte[] bytes, ref int i)
+ public EventInfoReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- EventData = new EventDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public EventInfoReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ EventData.FromBytes(bytes, ref i);
+ }
+
+ public EventInfoReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- EventData = new EventDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ EventData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -25693,11 +30879,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -25736,6 +30927,11 @@ namespace libsecondlife.Packets
public EventDataBlock() { }
public EventDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -25779,19 +30975,40 @@ namespace libsecondlife.Packets
EventData = new EventDataBlock();
}
- public EventNotificationAddRequestPacket(byte[] bytes, ref int i)
+ public EventNotificationAddRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- EventData = new EventDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public EventNotificationAddRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ EventData.FromBytes(bytes, ref i);
+ }
+
+ public EventNotificationAddRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- EventData = new EventDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ EventData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -25837,11 +31054,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -25880,6 +31102,11 @@ namespace libsecondlife.Packets
public EventDataBlock() { }
public EventDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -25923,19 +31150,40 @@ namespace libsecondlife.Packets
EventData = new EventDataBlock();
}
- public EventNotificationRemoveRequestPacket(byte[] bytes, ref int i)
+ public EventNotificationRemoveRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- EventData = new EventDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public EventNotificationRemoveRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ EventData.FromBytes(bytes, ref i);
+ }
+
+ public EventNotificationRemoveRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- EventData = new EventDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ EventData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -25981,11 +31229,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -26024,6 +31277,11 @@ namespace libsecondlife.Packets
public EventDataBlock() { }
public EventDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -26082,11 +31340,16 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- QueryID = new LLUUID(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_querytext = new byte[length];
Buffer.BlockCopy(bytes, i, _querytext, 0, length); i += length;
@@ -26145,21 +31408,42 @@ namespace libsecondlife.Packets
QueryData = new QueryDataBlock();
}
- public EventGodDeletePacket(byte[] bytes, ref int i)
+ public EventGodDeletePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- EventData = new EventDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public EventGodDeletePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ EventData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
+ }
+
+ public EventGodDeletePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- EventData = new EventDataBlock(bytes, ref i);
- QueryData = new QueryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ EventData.FromBytes(bytes, ref i);
+ QueryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -26206,10 +31490,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -26314,21 +31603,26 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- PickID = new LLUUID(bytes, i); i += 16;
- CreatorID = new LLUUID(bytes, i); i += 16;
+ PickID.FromBytes(bytes, i); i += 16;
+ CreatorID.FromBytes(bytes, i); i += 16;
TopPick = (bytes[i++] != 0) ? (bool)true : (bool)false;
- ParcelID = new LLUUID(bytes, i); i += 16;
+ ParcelID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
length = (ushort)(bytes[i++] + (bytes[i++] << 8));
_desc = new byte[length];
Buffer.BlockCopy(bytes, i, _desc, 0, length); i += length;
- SnapshotID = new LLUUID(bytes, i); i += 16;
+ SnapshotID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_user = new byte[length];
Buffer.BlockCopy(bytes, i, _user, 0, length); i += length;
@@ -26338,7 +31632,7 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_simname = new byte[length];
Buffer.BlockCopy(bytes, i, _simname, 0, length); i += length;
- PosGlobal = new LLVector3d(bytes, i); i += 24;
+ PosGlobal.FromBytes(bytes, i); i += 24;
SortOrder = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Enabled = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
@@ -26420,19 +31714,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public PickInfoReplyPacket(byte[] bytes, ref int i)
+ public PickInfoReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public PickInfoReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public PickInfoReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -26478,11 +31793,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -26553,22 +31873,27 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- PickID = new LLUUID(bytes, i); i += 16;
- CreatorID = new LLUUID(bytes, i); i += 16;
+ PickID.FromBytes(bytes, i); i += 16;
+ CreatorID.FromBytes(bytes, i); i += 16;
TopPick = (bytes[i++] != 0) ? (bool)true : (bool)false;
- ParcelID = new LLUUID(bytes, i); i += 16;
+ ParcelID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
length = (ushort)(bytes[i++] + (bytes[i++] << 8));
_desc = new byte[length];
Buffer.BlockCopy(bytes, i, _desc, 0, length); i += length;
- SnapshotID = new LLUUID(bytes, i); i += 16;
- PosGlobal = new LLVector3d(bytes, i); i += 24;
+ SnapshotID.FromBytes(bytes, i); i += 16;
+ PosGlobal.FromBytes(bytes, i); i += 24;
SortOrder = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Enabled = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
@@ -26635,19 +31960,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public PickInfoUpdatePacket(byte[] bytes, ref int i)
+ public PickInfoUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public PickInfoUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public PickInfoUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -26693,11 +32039,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -26736,10 +32087,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- PickID = new LLUUID(bytes, i); i += 16;
+ PickID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -26776,19 +32132,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public PickDeletePacket(byte[] bytes, ref int i)
+ public PickDeletePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public PickDeletePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public PickDeletePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -26834,11 +32211,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -26878,11 +32260,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- PickID = new LLUUID(bytes, i); i += 16;
- QueryID = new LLUUID(bytes, i); i += 16;
+ PickID.FromBytes(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -26921,19 +32308,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public PickGodDeletePacket(byte[] bytes, ref int i)
+ public PickGodDeletePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public PickGodDeletePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public PickGodDeletePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -27005,12 +32413,17 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- TaskID = new LLUUID(bytes, i); i += 16;
- ItemID = new LLUUID(bytes, i); i += 16;
+ TaskID.FromBytes(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_objectname = new byte[length];
Buffer.BlockCopy(bytes, i, _objectname, 0, length); i += length;
@@ -27069,17 +32482,38 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ScriptQuestionPacket(byte[] bytes, ref int i)
+ public ScriptQuestionPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ScriptQuestionPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ScriptQuestionPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -27124,6 +32558,11 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -27171,23 +32610,50 @@ namespace libsecondlife.Packets
Data = new DataBlock[0];
}
- public ScriptControlChangePacket(byte[] bytes, ref int i)
+ public ScriptControlChangePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- int count = (int)bytes[i++];
- Data = new DataBlock[count];
- for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ScriptControlChangePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ int count = (int)bytes[i++];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Data[j].FromBytes(bytes, ref i); }
+ }
+
+ public ScriptControlChangePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
int count = (int)bytes[i++];
- Data = new DataBlock[count];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ { Data[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -27287,11 +32753,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_firstname = new byte[length];
Buffer.BlockCopy(bytes, i, _firstname, 0, length); i += length;
@@ -27305,7 +32776,7 @@ namespace libsecondlife.Packets
_message = new byte[length];
Buffer.BlockCopy(bytes, i, _message, 0, length); i += length;
ChatChannel = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- ImageID = new LLUUID(bytes, i); i += 16;
+ ImageID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -27382,6 +32853,11 @@ namespace libsecondlife.Packets
public ButtonsBlock() { }
public ButtonsBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -27427,25 +32903,52 @@ namespace libsecondlife.Packets
Buttons = new ButtonsBlock[0];
}
- public ScriptDialogPacket(byte[] bytes, ref int i)
+ public ScriptDialogPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Data = new DataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- Buttons = new ButtonsBlock[count];
- for (int j = 0; j < count; j++)
- { Buttons[j] = new ButtonsBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ScriptDialogPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Data.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(Buttons.Length < count) {
+ Buttons = new ButtonsBlock[count];
+ for(int j = 0; j < count; j++) Buttons[j] = new ButtonsBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Buttons[j].FromBytes(bytes, ref i); }
+ }
+
+ public ScriptDialogPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Data.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- Buttons = new ButtonsBlock[count];
+ if(Buttons.Length < count) {
+ Buttons = new ButtonsBlock[count];
+ for(int j = 0; j < count; j++) Buttons[j] = new ButtonsBlock();
+ }
for (int j = 0; j < count; j++)
- { Buttons[j] = new ButtonsBlock(bytes, ref i); }
+ { Buttons[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -27497,11 +33000,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -27555,11 +33063,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
ChatChannel = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
ButtonIndex = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
length = (ushort)bytes[i++];
@@ -27615,19 +33128,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ScriptDialogReplyPacket(byte[] bytes, ref int i)
+ public ScriptDialogReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ScriptDialogReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ScriptDialogReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -27673,11 +33207,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -27714,17 +33253,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public ForceScriptControlReleasePacket(byte[] bytes, ref int i)
+ public ForceScriptControlReleasePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ForceScriptControlReleasePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public ForceScriptControlReleasePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -27768,11 +33328,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -27812,10 +33377,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
ObjectPermissions = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -27858,19 +33428,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public RevokePermissionsPacket(byte[] bytes, ref int i)
+ public RevokePermissionsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RevokePermissionsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public RevokePermissionsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -27954,6 +33545,11 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -27961,8 +33557,8 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_objectname = new byte[length];
Buffer.BlockCopy(bytes, i, _objectname, 0, length); i += length;
- ObjectID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
OwnerIsGroup = (bytes[i++] != 0) ? (bool)true : (bool)false;
length = (ushort)bytes[i++];
_message = new byte[length];
@@ -28022,17 +33618,38 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public LoadURLPacket(byte[] bytes, ref int i)
+ public LoadURLPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public LoadURLPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public LoadURLPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -28101,6 +33718,11 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -28111,8 +33733,8 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_simname = new byte[length];
Buffer.BlockCopy(bytes, i, _simname, 0, length); i += length;
- SimPosition = new LLVector3(bytes, i); i += 12;
- LookAt = new LLVector3(bytes, i); i += 12;
+ SimPosition.FromBytes(bytes, i); i += 12;
+ LookAt.FromBytes(bytes, i); i += 12;
}
catch (Exception)
{
@@ -28159,17 +33781,38 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ScriptTeleportRequestPacket(byte[] bytes, ref int i)
+ public ScriptTeleportRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ScriptTeleportRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ScriptTeleportRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -28225,6 +33868,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -28275,17 +33923,38 @@ namespace libsecondlife.Packets
ParcelData = new ParcelDataBlock();
}
- public ParcelOverlayPacket(byte[] bytes, ref int i)
+ public ParcelOverlayPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelOverlayPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ParcelData.FromBytes(bytes, ref i);
+ }
+
+ public ParcelOverlayPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ParcelData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -28329,11 +33998,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -28373,6 +34047,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -28422,19 +34101,40 @@ namespace libsecondlife.Packets
ParcelData = new ParcelDataBlock();
}
- public ParcelPropertiesRequestByIDPacket(byte[] bytes, ref int i)
+ public ParcelPropertiesRequestByIDPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelPropertiesRequestByIDPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
+ }
+
+ public ParcelPropertiesRequestByIDPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -28480,11 +34180,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -28586,6 +34291,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -28606,17 +34316,17 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_mediaurl = new byte[length];
Buffer.BlockCopy(bytes, i, _mediaurl, 0, length); i += length;
- MediaID = new LLUUID(bytes, i); i += 16;
+ MediaID.FromBytes(bytes, i); i += 16;
MediaAutoScale = (byte)bytes[i++];
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
PassPrice = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
PassHours = BitConverter.ToSingle(bytes, i); i += 4;
Category = (byte)bytes[i++];
- AuthBuyerID = new LLUUID(bytes, i); i += 16;
- SnapshotID = new LLUUID(bytes, i); i += 16;
- UserLocation = new LLVector3(bytes, i); i += 12;
- UserLookAt = new LLVector3(bytes, i); i += 12;
+ AuthBuyerID.FromBytes(bytes, i); i += 16;
+ SnapshotID.FromBytes(bytes, i); i += 16;
+ UserLocation.FromBytes(bytes, i); i += 12;
+ UserLookAt.FromBytes(bytes, i); i += 12;
LandingType = (byte)bytes[i++];
}
catch (Exception)
@@ -28720,19 +34430,40 @@ namespace libsecondlife.Packets
ParcelData = new ParcelDataBlock();
}
- public ParcelPropertiesUpdatePacket(byte[] bytes, ref int i)
+ public ParcelPropertiesUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelPropertiesUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
+ }
+
+ public ParcelPropertiesUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -28778,11 +34509,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -28822,6 +34558,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -28871,10 +34612,15 @@ namespace libsecondlife.Packets
public TaskIDsBlock() { }
public TaskIDsBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TaskID = new LLUUID(bytes, i); i += 16;
+ TaskID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -28911,10 +34657,15 @@ namespace libsecondlife.Packets
public OwnerIDsBlock() { }
public OwnerIDsBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- OwnerID = new LLUUID(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -28955,35 +34706,68 @@ namespace libsecondlife.Packets
OwnerIDs = new OwnerIDsBlock[0];
}
- public ParcelReturnObjectsPacket(byte[] bytes, ref int i)
+ public ParcelReturnObjectsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- TaskIDs = new TaskIDsBlock[count];
- for (int j = 0; j < count; j++)
- { TaskIDs[j] = new TaskIDsBlock(bytes, ref i); }
- count = (int)bytes[i++];
- OwnerIDs = new OwnerIDsBlock[count];
- for (int j = 0; j < count; j++)
- { OwnerIDs[j] = new OwnerIDsBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelReturnObjectsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(TaskIDs.Length < count) {
+ TaskIDs = new TaskIDsBlock[count];
+ for(int j = 0; j < count; j++) TaskIDs[j] = new TaskIDsBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { TaskIDs[j].FromBytes(bytes, ref i); }
+ count = (int)bytes[i++];
+ if(OwnerIDs.Length < count) {
+ OwnerIDs = new OwnerIDsBlock[count];
+ for(int j = 0; j < count; j++) OwnerIDs[j] = new OwnerIDsBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { OwnerIDs[j].FromBytes(bytes, ref i); }
+ }
+
+ public ParcelReturnObjectsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- TaskIDs = new TaskIDsBlock[count];
+ if(TaskIDs.Length < count) {
+ TaskIDs = new TaskIDsBlock[count];
+ for(int j = 0; j < count; j++) TaskIDs[j] = new TaskIDsBlock();
+ }
for (int j = 0; j < count; j++)
- { TaskIDs[j] = new TaskIDsBlock(bytes, ref i); }
+ { TaskIDs[j].FromBytes(bytes, ref i); }
count = (int)bytes[i++];
- OwnerIDs = new OwnerIDsBlock[count];
+ if(OwnerIDs.Length < count) {
+ OwnerIDs = new OwnerIDsBlock[count];
+ for(int j = 0; j < count; j++) OwnerIDs[j] = new OwnerIDsBlock();
+ }
for (int j = 0; j < count; j++)
- { OwnerIDs[j] = new OwnerIDsBlock(bytes, ref i); }
+ { OwnerIDs[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -29045,11 +34829,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -29089,6 +34878,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -29138,19 +34932,40 @@ namespace libsecondlife.Packets
ParcelData = new ParcelDataBlock();
}
- public ParcelSetOtherCleanTimePacket(byte[] bytes, ref int i)
+ public ParcelSetOtherCleanTimePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelSetOtherCleanTimePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
+ }
+
+ public ParcelSetOtherCleanTimePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -29196,11 +35011,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -29240,6 +35060,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -29289,10 +35114,15 @@ namespace libsecondlife.Packets
public TaskIDsBlock() { }
public TaskIDsBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TaskID = new LLUUID(bytes, i); i += 16;
+ TaskID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -29329,10 +35159,15 @@ namespace libsecondlife.Packets
public OwnerIDsBlock() { }
public OwnerIDsBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- OwnerID = new LLUUID(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -29373,35 +35208,68 @@ namespace libsecondlife.Packets
OwnerIDs = new OwnerIDsBlock[0];
}
- public ParcelDisableObjectsPacket(byte[] bytes, ref int i)
+ public ParcelDisableObjectsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- TaskIDs = new TaskIDsBlock[count];
- for (int j = 0; j < count; j++)
- { TaskIDs[j] = new TaskIDsBlock(bytes, ref i); }
- count = (int)bytes[i++];
- OwnerIDs = new OwnerIDsBlock[count];
- for (int j = 0; j < count; j++)
- { OwnerIDs[j] = new OwnerIDsBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelDisableObjectsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(TaskIDs.Length < count) {
+ TaskIDs = new TaskIDsBlock[count];
+ for(int j = 0; j < count; j++) TaskIDs[j] = new TaskIDsBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { TaskIDs[j].FromBytes(bytes, ref i); }
+ count = (int)bytes[i++];
+ if(OwnerIDs.Length < count) {
+ OwnerIDs = new OwnerIDsBlock[count];
+ for(int j = 0; j < count; j++) OwnerIDs[j] = new OwnerIDsBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { OwnerIDs[j].FromBytes(bytes, ref i); }
+ }
+
+ public ParcelDisableObjectsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- TaskIDs = new TaskIDsBlock[count];
+ if(TaskIDs.Length < count) {
+ TaskIDs = new TaskIDsBlock[count];
+ for(int j = 0; j < count; j++) TaskIDs[j] = new TaskIDsBlock();
+ }
for (int j = 0; j < count; j++)
- { TaskIDs[j] = new TaskIDsBlock(bytes, ref i); }
+ { TaskIDs[j].FromBytes(bytes, ref i); }
count = (int)bytes[i++];
- OwnerIDs = new OwnerIDsBlock[count];
+ if(OwnerIDs.Length < count) {
+ OwnerIDs = new OwnerIDsBlock[count];
+ for(int j = 0; j < count; j++) OwnerIDs[j] = new OwnerIDsBlock();
+ }
for (int j = 0; j < count; j++)
- { OwnerIDs[j] = new OwnerIDsBlock(bytes, ref i); }
+ { OwnerIDs[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -29463,11 +35331,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -29507,6 +35380,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -29556,10 +35434,15 @@ namespace libsecondlife.Packets
public ReturnIDsBlock() { }
public ReturnIDsBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ReturnID = new LLUUID(bytes, i); i += 16;
+ ReturnID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -29598,27 +35481,54 @@ namespace libsecondlife.Packets
ReturnIDs = new ReturnIDsBlock[0];
}
- public ParcelSelectObjectsPacket(byte[] bytes, ref int i)
+ public ParcelSelectObjectsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ReturnIDs = new ReturnIDsBlock[count];
- for (int j = 0; j < count; j++)
- { ReturnIDs[j] = new ReturnIDsBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelSelectObjectsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ReturnIDs.Length < count) {
+ ReturnIDs = new ReturnIDsBlock[count];
+ for(int j = 0; j < count; j++) ReturnIDs[j] = new ReturnIDsBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ReturnIDs[j].FromBytes(bytes, ref i); }
+ }
+
+ public ParcelSelectObjectsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ReturnIDs = new ReturnIDsBlock[count];
+ if(ReturnIDs.Length < count) {
+ ReturnIDs = new ReturnIDsBlock[count];
+ for(int j = 0; j < count; j++) ReturnIDs[j] = new ReturnIDsBlock();
+ }
for (int j = 0; j < count; j++)
- { ReturnIDs[j] = new ReturnIDsBlock(bytes, ref i); }
+ { ReturnIDs[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -29672,11 +35582,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -29713,17 +35628,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public EstateCovenantRequestPacket(byte[] bytes, ref int i)
+ public EstateCovenantRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public EstateCovenantRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public EstateCovenantRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -29781,16 +35717,21 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- CovenantID = new LLUUID(bytes, i); i += 16;
+ CovenantID.FromBytes(bytes, i); i += 16;
CovenantTimestamp = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
length = (ushort)bytes[i++];
_estatename = new byte[length];
Buffer.BlockCopy(bytes, i, _estatename, 0, length); i += length;
- EstateOwnerID = new LLUUID(bytes, i); i += 16;
+ EstateOwnerID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -29837,17 +35778,38 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public EstateCovenantReplyPacket(byte[] bytes, ref int i)
+ public EstateCovenantReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public EstateCovenantReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public EstateCovenantReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -29890,6 +35852,11 @@ namespace libsecondlife.Packets
public HeaderBlock() { }
public HeaderBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -29930,6 +35897,11 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -29973,25 +35945,52 @@ namespace libsecondlife.Packets
Data = new DataBlock[0];
}
- public ForceObjectSelectPacket(byte[] bytes, ref int i)
+ public ForceObjectSelectPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- _Header = new HeaderBlock(bytes, ref i);
- int count = (int)bytes[i++];
- Data = new DataBlock[count];
- for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ForceObjectSelectPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ _Header.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Data[j].FromBytes(bytes, ref i); }
+ }
+
+ public ForceObjectSelectPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- _Header = new HeaderBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ _Header.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- Data = new DataBlock[count];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ { Data[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -30043,11 +36042,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -30086,6 +36090,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -30129,19 +36138,40 @@ namespace libsecondlife.Packets
ParcelData = new ParcelDataBlock();
}
- public ParcelBuyPassPacket(byte[] bytes, ref int i)
+ public ParcelBuyPassPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelBuyPassPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
+ }
+
+ public ParcelBuyPassPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -30187,11 +36217,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -30231,10 +36266,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
LocalID = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -30277,19 +36317,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ParcelDeedToGroupPacket(byte[] bytes, ref int i)
+ public ParcelDeedToGroupPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelDeedToGroupPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ParcelDeedToGroupPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -30335,11 +36396,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -30378,6 +36444,11 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -30421,19 +36492,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ParcelReclaimPacket(byte[] bytes, ref int i)
+ public ParcelReclaimPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelReclaimPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ParcelReclaimPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -30479,11 +36571,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -30524,10 +36621,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
IsGroupOwned = (bytes[i++] != 0) ? (bool)true : (bool)false;
Final = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
@@ -30573,6 +36675,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -30637,27 +36744,54 @@ namespace libsecondlife.Packets
ParcelData = new ParcelDataBlock[0];
}
- public ParcelClaimPacket(byte[] bytes, ref int i)
+ public ParcelClaimPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ParcelData = new ParcelDataBlock[count];
- for (int j = 0; j < count; j++)
- { ParcelData[j] = new ParcelDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelClaimPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ParcelData.Length < count) {
+ ParcelData = new ParcelDataBlock[count];
+ for(int j = 0; j < count; j++) ParcelData[j] = new ParcelDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ParcelData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ParcelClaimPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ParcelData = new ParcelDataBlock[count];
+ if(ParcelData.Length < count) {
+ ParcelData = new ParcelDataBlock[count];
+ for(int j = 0; j < count; j++) ParcelData[j] = new ParcelDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ParcelData[j] = new ParcelDataBlock(bytes, ref i); }
+ { ParcelData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -30711,11 +36845,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -30757,6 +36896,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -30819,19 +36963,40 @@ namespace libsecondlife.Packets
ParcelData = new ParcelDataBlock();
}
- public ParcelJoinPacket(byte[] bytes, ref int i)
+ public ParcelJoinPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelJoinPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
+ }
+
+ public ParcelJoinPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -30877,11 +37042,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -30923,6 +37093,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -30985,19 +37160,40 @@ namespace libsecondlife.Packets
ParcelData = new ParcelDataBlock();
}
- public ParcelDividePacket(byte[] bytes, ref int i)
+ public ParcelDividePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelDividePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
+ }
+
+ public ParcelDividePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -31043,11 +37239,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -31086,6 +37287,11 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -31129,19 +37335,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ParcelReleasePacket(byte[] bytes, ref int i)
+ public ParcelReleasePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelReleasePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ParcelReleasePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -31187,11 +37414,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -31234,10 +37466,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
IsGroupOwned = (bytes[i++] != 0) ? (bool)true : (bool)false;
RemoveContribution = (bytes[i++] != 0) ? (bool)true : (bool)false;
LocalID = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -31290,6 +37527,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -31341,21 +37583,42 @@ namespace libsecondlife.Packets
ParcelData = new ParcelDataBlock();
}
- public ParcelBuyPacket(byte[] bytes, ref int i)
+ public ParcelBuyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelBuyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
+ }
+
+ public ParcelBuyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -31403,11 +37666,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -31447,10 +37715,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- OwnerID = new LLUUID(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
LocalID = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -31493,19 +37766,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ParcelGodForceOwnerPacket(byte[] bytes, ref int i)
+ public ParcelGodForceOwnerPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelGodForceOwnerPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ParcelGodForceOwnerPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -31551,11 +37845,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -31596,6 +37895,11 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -31651,19 +37955,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ParcelAccessListRequestPacket(byte[] bytes, ref int i)
+ public ParcelAccessListRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelAccessListRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ParcelAccessListRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -31711,10 +38036,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
SequenceID = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
LocalID = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -31771,10 +38101,15 @@ namespace libsecondlife.Packets
public ListBlock() { }
public ListBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
Time = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
@@ -31823,25 +38158,52 @@ namespace libsecondlife.Packets
List = new ListBlock[0];
}
- public ParcelAccessListReplyPacket(byte[] bytes, ref int i)
+ public ParcelAccessListReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Data = new DataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- List = new ListBlock[count];
- for (int j = 0; j < count; j++)
- { List[j] = new ListBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelAccessListReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Data.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(List.Length < count) {
+ List = new ListBlock[count];
+ for(int j = 0; j < count; j++) List[j] = new ListBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { List[j].FromBytes(bytes, ref i); }
+ }
+
+ public ParcelAccessListReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Data.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- List = new ListBlock[count];
+ if(List.Length < count) {
+ List = new ListBlock[count];
+ for(int j = 0; j < count; j++) List[j] = new ListBlock();
+ }
for (int j = 0; j < count; j++)
- { List[j] = new ListBlock(bytes, ref i); }
+ { List[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -31893,11 +38255,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -31940,12 +38307,17 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
LocalID = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
SequenceID = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Sections = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
@@ -32006,10 +38378,15 @@ namespace libsecondlife.Packets
public ListBlock() { }
public ListBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
Time = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
@@ -32060,27 +38437,54 @@ namespace libsecondlife.Packets
List = new ListBlock[0];
}
- public ParcelAccessListUpdatePacket(byte[] bytes, ref int i)
+ public ParcelAccessListUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- List = new ListBlock[count];
- for (int j = 0; j < count; j++)
- { List[j] = new ListBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelAccessListUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(List.Length < count) {
+ List = new ListBlock[count];
+ for(int j = 0; j < count; j++) List[j] = new ListBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { List[j].FromBytes(bytes, ref i); }
+ }
+
+ public ParcelAccessListUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- List = new ListBlock[count];
+ if(List.Length < count) {
+ List = new ListBlock[count];
+ for(int j = 0; j < count; j++) List[j] = new ListBlock();
+ }
for (int j = 0; j < count; j++)
- { List[j] = new ListBlock(bytes, ref i); }
+ { List[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -32134,11 +38538,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -32178,11 +38587,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
LocalID = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- ParcelID = new LLUUID(bytes, i); i += 16;
+ ParcelID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -32224,19 +38638,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ParcelDwellRequestPacket(byte[] bytes, ref int i)
+ public ParcelDwellRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelDwellRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ParcelDwellRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -32281,10 +38716,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -32323,11 +38763,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
LocalID = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- ParcelID = new LLUUID(bytes, i); i += 16;
+ ParcelID.FromBytes(bytes, i); i += 16;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
Dwell = BitConverter.ToSingle(bytes, i); i += 4;
}
@@ -32376,19 +38821,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ParcelDwellReplyPacket(byte[] bytes, ref int i)
+ public ParcelDwellReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelDwellReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ParcelDwellReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -32434,11 +38900,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -32477,6 +38948,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -32520,19 +38996,40 @@ namespace libsecondlife.Packets
ParcelData = new ParcelDataBlock();
}
- public ParcelGodMarkAsContentPacket(byte[] bytes, ref int i)
+ public ParcelGodMarkAsContentPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelGodMarkAsContentPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
+ }
+
+ public ParcelGodMarkAsContentPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -32578,11 +39075,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -32622,11 +39124,16 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
LocalID = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- SnapshotID = new LLUUID(bytes, i); i += 16;
+ SnapshotID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -32668,19 +39175,40 @@ namespace libsecondlife.Packets
ParcelData = new ParcelDataBlock();
}
- public ViewerStartAuctionPacket(byte[] bytes, ref int i)
+ public ViewerStartAuctionPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ViewerStartAuctionPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
+ }
+
+ public ViewerStartAuctionPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -32725,10 +39253,15 @@ namespace libsecondlife.Packets
public UUIDNameBlockBlock() { }
public UUIDNameBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -32763,23 +39296,50 @@ namespace libsecondlife.Packets
UUIDNameBlock = new UUIDNameBlockBlock[0];
}
- public UUIDNameRequestPacket(byte[] bytes, ref int i)
+ public UUIDNameRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- int count = (int)bytes[i++];
- UUIDNameBlock = new UUIDNameBlockBlock[count];
- for (int j = 0; j < count; j++)
- { UUIDNameBlock[j] = new UUIDNameBlockBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UUIDNameRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ int count = (int)bytes[i++];
+ if(UUIDNameBlock.Length < count) {
+ UUIDNameBlock = new UUIDNameBlockBlock[count];
+ for(int j = 0; j < count; j++) UUIDNameBlock[j] = new UUIDNameBlockBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { UUIDNameBlock[j].FromBytes(bytes, ref i); }
+ }
+
+ public UUIDNameRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
int count = (int)bytes[i++];
- UUIDNameBlock = new UUIDNameBlockBlock[count];
+ if(UUIDNameBlock.Length < count) {
+ UUIDNameBlock = new UUIDNameBlockBlock[count];
+ for(int j = 0; j < count; j++) UUIDNameBlock[j] = new UUIDNameBlockBlock();
+ }
for (int j = 0; j < count; j++)
- { UUIDNameBlock[j] = new UUIDNameBlockBlock(bytes, ref i); }
+ { UUIDNameBlock[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -32853,11 +39413,16 @@ namespace libsecondlife.Packets
public UUIDNameBlockBlock() { }
public UUIDNameBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_firstname = new byte[length];
Buffer.BlockCopy(bytes, i, _firstname, 0, length); i += length;
@@ -32907,23 +39472,50 @@ namespace libsecondlife.Packets
UUIDNameBlock = new UUIDNameBlockBlock[0];
}
- public UUIDNameReplyPacket(byte[] bytes, ref int i)
+ public UUIDNameReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- int count = (int)bytes[i++];
- UUIDNameBlock = new UUIDNameBlockBlock[count];
- for (int j = 0; j < count; j++)
- { UUIDNameBlock[j] = new UUIDNameBlockBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UUIDNameReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ int count = (int)bytes[i++];
+ if(UUIDNameBlock.Length < count) {
+ UUIDNameBlock = new UUIDNameBlockBlock[count];
+ for(int j = 0; j < count; j++) UUIDNameBlock[j] = new UUIDNameBlockBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { UUIDNameBlock[j].FromBytes(bytes, ref i); }
+ }
+
+ public UUIDNameReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
int count = (int)bytes[i++];
- UUIDNameBlock = new UUIDNameBlockBlock[count];
+ if(UUIDNameBlock.Length < count) {
+ UUIDNameBlock = new UUIDNameBlockBlock[count];
+ for(int j = 0; j < count; j++) UUIDNameBlock[j] = new UUIDNameBlockBlock();
+ }
for (int j = 0; j < count; j++)
- { UUIDNameBlock[j] = new UUIDNameBlockBlock(bytes, ref i); }
+ { UUIDNameBlock[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -32972,10 +39564,15 @@ namespace libsecondlife.Packets
public UUIDNameBlockBlock() { }
public UUIDNameBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -33010,23 +39607,50 @@ namespace libsecondlife.Packets
UUIDNameBlock = new UUIDNameBlockBlock[0];
}
- public UUIDGroupNameRequestPacket(byte[] bytes, ref int i)
+ public UUIDGroupNameRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- int count = (int)bytes[i++];
- UUIDNameBlock = new UUIDNameBlockBlock[count];
- for (int j = 0; j < count; j++)
- { UUIDNameBlock[j] = new UUIDNameBlockBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UUIDGroupNameRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ int count = (int)bytes[i++];
+ if(UUIDNameBlock.Length < count) {
+ UUIDNameBlock = new UUIDNameBlockBlock[count];
+ for(int j = 0; j < count; j++) UUIDNameBlock[j] = new UUIDNameBlockBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { UUIDNameBlock[j].FromBytes(bytes, ref i); }
+ }
+
+ public UUIDGroupNameRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
int count = (int)bytes[i++];
- UUIDNameBlock = new UUIDNameBlockBlock[count];
+ if(UUIDNameBlock.Length < count) {
+ UUIDNameBlock = new UUIDNameBlockBlock[count];
+ for(int j = 0; j < count; j++) UUIDNameBlock[j] = new UUIDNameBlockBlock();
+ }
for (int j = 0; j < count; j++)
- { UUIDNameBlock[j] = new UUIDNameBlockBlock(bytes, ref i); }
+ { UUIDNameBlock[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -33088,11 +39712,16 @@ namespace libsecondlife.Packets
public UUIDNameBlockBlock() { }
public UUIDNameBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_groupname = new byte[length];
Buffer.BlockCopy(bytes, i, _groupname, 0, length); i += length;
@@ -33134,23 +39763,50 @@ namespace libsecondlife.Packets
UUIDNameBlock = new UUIDNameBlockBlock[0];
}
- public UUIDGroupNameReplyPacket(byte[] bytes, ref int i)
+ public UUIDGroupNameReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- int count = (int)bytes[i++];
- UUIDNameBlock = new UUIDNameBlockBlock[count];
- for (int j = 0; j < count; j++)
- { UUIDNameBlock[j] = new UUIDNameBlockBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UUIDGroupNameReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ int count = (int)bytes[i++];
+ if(UUIDNameBlock.Length < count) {
+ UUIDNameBlock = new UUIDNameBlockBlock[count];
+ for(int j = 0; j < count; j++) UUIDNameBlock[j] = new UUIDNameBlockBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { UUIDNameBlock[j].FromBytes(bytes, ref i); }
+ }
+
+ public UUIDGroupNameReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
int count = (int)bytes[i++];
- UUIDNameBlock = new UUIDNameBlockBlock[count];
+ if(UUIDNameBlock.Length < count) {
+ UUIDNameBlock = new UUIDNameBlockBlock[count];
+ for(int j = 0; j < count; j++) UUIDNameBlock[j] = new UUIDNameBlockBlock();
+ }
for (int j = 0; j < count; j++)
- { UUIDNameBlock[j] = new UUIDNameBlockBlock(bytes, ref i); }
+ { UUIDNameBlock[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -33200,11 +39856,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -33241,17 +39902,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public ChildAgentDyingPacket(byte[] bytes, ref int i)
+ public ChildAgentDyingPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ChildAgentDyingPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public ChildAgentDyingPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -33295,11 +39977,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -33336,17 +40023,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public ChildAgentUnknownPacket(byte[] bytes, ref int i)
+ public ChildAgentUnknownPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ChildAgentUnknownPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public ChildAgentUnknownPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -33390,11 +40098,16 @@ namespace libsecondlife.Packets
public ScriptBlock() { }
public ScriptBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
- ItemID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -33431,17 +40144,38 @@ namespace libsecondlife.Packets
Script = new ScriptBlock();
}
- public GetScriptRunningPacket(byte[] bytes, ref int i)
+ public GetScriptRunningPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Script = new ScriptBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GetScriptRunningPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Script.FromBytes(bytes, ref i);
+ }
+
+ public GetScriptRunningPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Script = new ScriptBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Script.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -33486,11 +40220,16 @@ namespace libsecondlife.Packets
public ScriptBlock() { }
public ScriptBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
- ItemID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
Running = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -33530,17 +40269,38 @@ namespace libsecondlife.Packets
Script = new ScriptBlock();
}
- public ScriptRunningReplyPacket(byte[] bytes, ref int i)
+ public ScriptRunningReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Script = new ScriptBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ScriptRunningReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Script.FromBytes(bytes, ref i);
+ }
+
+ public ScriptRunningReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Script = new ScriptBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Script.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -33584,11 +40344,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -33629,11 +40394,16 @@ namespace libsecondlife.Packets
public ScriptBlock() { }
public ScriptBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
- ItemID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
Running = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -33675,19 +40445,40 @@ namespace libsecondlife.Packets
Script = new ScriptBlock();
}
- public SetScriptRunningPacket(byte[] bytes, ref int i)
+ public SetScriptRunningPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Script = new ScriptBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public SetScriptRunningPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Script.FromBytes(bytes, ref i);
+ }
+
+ public SetScriptRunningPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Script = new ScriptBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Script.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -33733,11 +40524,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -33777,11 +40573,16 @@ namespace libsecondlife.Packets
public ScriptBlock() { }
public ScriptBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
- ItemID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -33820,19 +40621,40 @@ namespace libsecondlife.Packets
Script = new ScriptBlock();
}
- public ScriptResetPacket(byte[] bytes, ref int i)
+ public ScriptResetPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Script = new ScriptBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ScriptResetPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Script.FromBytes(bytes, ref i);
+ }
+
+ public ScriptResetPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Script = new ScriptBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Script.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -33899,15 +40721,20 @@ namespace libsecondlife.Packets
public RequesterBlock() { }
public RequesterBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- SourceID = new LLUUID(bytes, i); i += 16;
- RequestID = new LLUUID(bytes, i); i += 16;
- SearchID = new LLUUID(bytes, i); i += 16;
- SearchPos = new LLVector3(bytes, i); i += 12;
- SearchDir = new LLQuaternion(bytes, i, true); i += 12;
+ SourceID.FromBytes(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
+ SearchID.FromBytes(bytes, i); i += 16;
+ SearchPos.FromBytes(bytes, i); i += 12;
+ SearchDir.FromBytes(bytes, i, true); i += 12;
length = (ushort)bytes[i++];
_searchname = new byte[length];
Buffer.BlockCopy(bytes, i, _searchname, 0, length); i += length;
@@ -33990,17 +40817,38 @@ namespace libsecondlife.Packets
Requester = new RequesterBlock();
}
- public ScriptSensorRequestPacket(byte[] bytes, ref int i)
+ public ScriptSensorRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Requester = new RequesterBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ScriptSensorRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Requester.FromBytes(bytes, ref i);
+ }
+
+ public ScriptSensorRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Requester = new RequesterBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Requester.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -34043,10 +40891,15 @@ namespace libsecondlife.Packets
public RequesterBlock() { }
public RequesterBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- SourceID = new LLUUID(bytes, i); i += 16;
+ SourceID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -34103,16 +40956,21 @@ namespace libsecondlife.Packets
public SensedDataBlock() { }
public SensedDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
- Position = new LLVector3(bytes, i); i += 12;
- Velocity = new LLVector3(bytes, i); i += 12;
- Rotation = new LLQuaternion(bytes, i, true); i += 12;
+ ObjectID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
+ Position.FromBytes(bytes, i); i += 12;
+ Velocity.FromBytes(bytes, i); i += 12;
+ Rotation.FromBytes(bytes, i, true); i += 12;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
@@ -34180,25 +41038,52 @@ namespace libsecondlife.Packets
SensedData = new SensedDataBlock[0];
}
- public ScriptSensorReplyPacket(byte[] bytes, ref int i)
+ public ScriptSensorReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- Requester = new RequesterBlock(bytes, ref i);
- int count = (int)bytes[i++];
- SensedData = new SensedDataBlock[count];
- for (int j = 0; j < count; j++)
- { SensedData[j] = new SensedDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ScriptSensorReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Requester.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(SensedData.Length < count) {
+ SensedData = new SensedDataBlock[count];
+ for(int j = 0; j < count; j++) SensedData[j] = new SensedDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { SensedData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ScriptSensorReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Requester = new RequesterBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Requester.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- SensedData = new SensedDataBlock[count];
+ if(SensedData.Length < count) {
+ SensedData = new SensedDataBlock[count];
+ for(int j = 0; j < count; j++) SensedData[j] = new SensedDataBlock();
+ }
for (int j = 0; j < count; j++)
- { SensedData[j] = new SensedDataBlock(bytes, ref i); }
+ { SensedData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -34251,11 +41136,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
CircuitCode = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -34298,17 +41188,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public CompleteAgentMovementPacket(byte[] bytes, ref int i)
+ public CompleteAgentMovementPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public CompleteAgentMovementPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public CompleteAgentMovementPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -34352,11 +41263,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -34398,11 +41314,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- Position = new LLVector3(bytes, i); i += 12;
- LookAt = new LLVector3(bytes, i); i += 12;
+ Position.FromBytes(bytes, i); i += 12;
+ LookAt.FromBytes(bytes, i); i += 12;
RegionHandle = (ulong)((ulong)bytes[i++] + ((ulong)bytes[i++] << 8) + ((ulong)bytes[i++] << 16) + ((ulong)bytes[i++] << 24) + ((ulong)bytes[i++] << 32) + ((ulong)bytes[i++] << 40) + ((ulong)bytes[i++] << 48) + ((ulong)bytes[i++] << 56));
Timestamp = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
@@ -34469,6 +41390,11 @@ namespace libsecondlife.Packets
public SimDataBlock() { }
public SimDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -34517,21 +41443,42 @@ namespace libsecondlife.Packets
SimData = new SimDataBlock();
}
- public AgentMovementCompletePacket(byte[] bytes, ref int i)
+ public AgentMovementCompletePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
- SimData = new SimDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentMovementCompletePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ SimData.FromBytes(bytes, ref i);
+ }
+
+ public AgentMovementCompletePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
- SimData = new SimDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ SimData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -34579,11 +41526,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -34620,17 +41572,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public LogoutRequestPacket(byte[] bytes, ref int i)
+ public LogoutRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public LogoutRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public LogoutRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -34674,11 +41647,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -34717,10 +41695,15 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -34757,25 +41740,52 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock[0];
}
- public LogoutReplyPacket(byte[] bytes, ref int i)
+ public LogoutReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
- for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public LogoutReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { InventoryData[j].FromBytes(bytes, ref i); }
+ }
+
+ public LogoutReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ { InventoryData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -34827,11 +41837,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -34915,18 +41930,23 @@ namespace libsecondlife.Packets
public MessageBlockBlock() { }
public MessageBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
FromGroup = (bytes[i++] != 0) ? (bool)true : (bool)false;
- ToAgentID = new LLUUID(bytes, i); i += 16;
+ ToAgentID.FromBytes(bytes, i); i += 16;
ParentEstateID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- RegionID = new LLUUID(bytes, i); i += 16;
- Position = new LLVector3(bytes, i); i += 12;
+ RegionID.FromBytes(bytes, i); i += 16;
+ Position.FromBytes(bytes, i); i += 12;
Offline = (byte)bytes[i++];
Dialog = (byte)bytes[i++];
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
Timestamp = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
length = (ushort)bytes[i++];
_fromagentname = new byte[length];
@@ -35011,19 +42031,40 @@ namespace libsecondlife.Packets
MessageBlock = new MessageBlockBlock();
}
- public ImprovedInstantMessagePacket(byte[] bytes, ref int i)
+ public ImprovedInstantMessagePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- MessageBlock = new MessageBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ImprovedInstantMessagePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MessageBlock.FromBytes(bytes, ref i);
+ }
+
+ public ImprovedInstantMessagePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- MessageBlock = new MessageBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MessageBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -35069,11 +42110,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -35110,17 +42156,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public RetrieveInstantMessagesPacket(byte[] bytes, ref int i)
+ public RetrieveInstantMessagesPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RetrieveInstantMessagesPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public RetrieveInstantMessagesPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -35165,11 +42232,16 @@ namespace libsecondlife.Packets
public AgentBlockBlock() { }
public AgentBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- Hunter = new LLUUID(bytes, i); i += 16;
- Prey = new LLUUID(bytes, i); i += 16;
+ Hunter.FromBytes(bytes, i); i += 16;
+ Prey.FromBytes(bytes, i); i += 16;
SpaceIP = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -35215,6 +42287,11 @@ namespace libsecondlife.Packets
public LocationBlockBlock() { }
public LocationBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -35265,25 +42342,52 @@ namespace libsecondlife.Packets
LocationBlock = new LocationBlockBlock[0];
}
- public FindAgentPacket(byte[] bytes, ref int i)
+ public FindAgentPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentBlock = new AgentBlockBlock(bytes, ref i);
- int count = (int)bytes[i++];
- LocationBlock = new LocationBlockBlock[count];
- for (int j = 0; j < count; j++)
- { LocationBlock[j] = new LocationBlockBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public FindAgentPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentBlock.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(LocationBlock.Length < count) {
+ LocationBlock = new LocationBlockBlock[count];
+ for(int j = 0; j < count; j++) LocationBlock[j] = new LocationBlockBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { LocationBlock[j].FromBytes(bytes, ref i); }
+ }
+
+ public FindAgentPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentBlock = new AgentBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentBlock.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- LocationBlock = new LocationBlockBlock[count];
+ if(LocationBlock.Length < count) {
+ LocationBlock = new LocationBlockBlock[count];
+ for(int j = 0; j < count; j++) LocationBlock[j] = new LocationBlockBlock();
+ }
for (int j = 0; j < count; j++)
- { LocationBlock[j] = new LocationBlockBlock(bytes, ref i); }
+ { LocationBlock[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -35335,11 +42439,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -35379,11 +42488,16 @@ namespace libsecondlife.Packets
public RequestBlockBlock() { }
public RequestBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
Godlike = (bytes[i++] != 0) ? (bool)true : (bool)false;
- Token = new LLUUID(bytes, i); i += 16;
+ Token.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -35422,19 +42536,40 @@ namespace libsecondlife.Packets
RequestBlock = new RequestBlockBlock();
}
- public RequestGodlikePowersPacket(byte[] bytes, ref int i)
+ public RequestGodlikePowersPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- RequestBlock = new RequestBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RequestGodlikePowersPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RequestBlock.FromBytes(bytes, ref i);
+ }
+
+ public RequestGodlikePowersPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- RequestBlock = new RequestBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RequestBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -35480,11 +42615,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -35524,11 +42664,16 @@ namespace libsecondlife.Packets
public GrantDataBlock() { }
public GrantDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
GodLevel = (byte)bytes[i++];
- Token = new LLUUID(bytes, i); i += 16;
+ Token.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -35567,19 +42712,40 @@ namespace libsecondlife.Packets
GrantData = new GrantDataBlock();
}
- public GrantGodlikePowersPacket(byte[] bytes, ref int i)
+ public GrantGodlikePowersPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GrantData = new GrantDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GrantGodlikePowersPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GrantData.FromBytes(bytes, ref i);
+ }
+
+ public GrantGodlikePowersPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GrantData = new GrantDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GrantData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -35626,12 +42792,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- TransactionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -35685,6 +42856,11 @@ namespace libsecondlife.Packets
public MethodDataBlock() { }
public MethodDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -35692,7 +42868,7 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_method = new byte[length];
Buffer.BlockCopy(bytes, i, _method, 0, length); i += length;
- Invoice = new LLUUID(bytes, i); i += 16;
+ Invoice.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -35746,6 +42922,11 @@ namespace libsecondlife.Packets
public ParamListBlock() { }
public ParamListBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -35793,27 +42974,54 @@ namespace libsecondlife.Packets
ParamList = new ParamListBlock[0];
}
- public GodlikeMessagePacket(byte[] bytes, ref int i)
+ public GodlikeMessagePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- MethodData = new MethodDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ParamList = new ParamListBlock[count];
- for (int j = 0; j < count; j++)
- { ParamList[j] = new ParamListBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GodlikeMessagePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MethodData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ParamList.Length < count) {
+ ParamList = new ParamListBlock[count];
+ for(int j = 0; j < count; j++) ParamList[j] = new ParamListBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ParamList[j].FromBytes(bytes, ref i); }
+ }
+
+ public GodlikeMessagePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- MethodData = new MethodDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MethodData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ParamList = new ParamListBlock[count];
+ if(ParamList.Length < count) {
+ ParamList = new ParamListBlock[count];
+ for(int j = 0; j < count; j++) ParamList[j] = new ParamListBlock();
+ }
for (int j = 0; j < count; j++)
- { ParamList[j] = new ParamListBlock(bytes, ref i); }
+ { ParamList[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -35868,12 +43076,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- TransactionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -35927,6 +43140,11 @@ namespace libsecondlife.Packets
public MethodDataBlock() { }
public MethodDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -35934,7 +43152,7 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_method = new byte[length];
Buffer.BlockCopy(bytes, i, _method, 0, length); i += length;
- Invoice = new LLUUID(bytes, i); i += 16;
+ Invoice.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -35988,6 +43206,11 @@ namespace libsecondlife.Packets
public ParamListBlock() { }
public ParamListBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -36035,27 +43258,54 @@ namespace libsecondlife.Packets
ParamList = new ParamListBlock[0];
}
- public EstateOwnerMessagePacket(byte[] bytes, ref int i)
+ public EstateOwnerMessagePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- MethodData = new MethodDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ParamList = new ParamListBlock[count];
- for (int j = 0; j < count; j++)
- { ParamList[j] = new ParamListBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public EstateOwnerMessagePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MethodData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ParamList.Length < count) {
+ ParamList = new ParamListBlock[count];
+ for(int j = 0; j < count; j++) ParamList[j] = new ParamListBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ParamList[j].FromBytes(bytes, ref i); }
+ }
+
+ public EstateOwnerMessagePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- MethodData = new MethodDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MethodData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ParamList = new ParamListBlock[count];
+ if(ParamList.Length < count) {
+ ParamList = new ParamListBlock[count];
+ for(int j = 0; j < count; j++) ParamList[j] = new ParamListBlock();
+ }
for (int j = 0; j < count; j++)
- { ParamList[j] = new ParamListBlock(bytes, ref i); }
+ { ParamList[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -36110,12 +43360,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- TransactionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -36169,6 +43424,11 @@ namespace libsecondlife.Packets
public MethodDataBlock() { }
public MethodDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -36176,7 +43436,7 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_method = new byte[length];
Buffer.BlockCopy(bytes, i, _method, 0, length); i += length;
- Invoice = new LLUUID(bytes, i); i += 16;
+ Invoice.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -36230,6 +43490,11 @@ namespace libsecondlife.Packets
public ParamListBlock() { }
public ParamListBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -36277,27 +43542,54 @@ namespace libsecondlife.Packets
ParamList = new ParamListBlock[0];
}
- public GenericMessagePacket(byte[] bytes, ref int i)
+ public GenericMessagePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- MethodData = new MethodDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ParamList = new ParamListBlock[count];
- for (int j = 0; j < count; j++)
- { ParamList[j] = new ParamListBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GenericMessagePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MethodData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ParamList.Length < count) {
+ ParamList = new ParamListBlock[count];
+ for(int j = 0; j < count; j++) ParamList[j] = new ParamListBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ParamList[j].FromBytes(bytes, ref i); }
+ }
+
+ public GenericMessagePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- MethodData = new MethodDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MethodData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ParamList = new ParamListBlock[count];
+ if(ParamList.Length < count) {
+ ParamList = new ParamListBlock[count];
+ for(int j = 0; j < count; j++) ParamList[j] = new ParamListBlock();
+ }
for (int j = 0; j < count; j++)
- { ParamList[j] = new ParamListBlock(bytes, ref i); }
+ { ParamList[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -36351,11 +43643,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -36394,6 +43691,11 @@ namespace libsecondlife.Packets
public MuteDataBlock() { }
public MuteDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -36437,19 +43739,40 @@ namespace libsecondlife.Packets
MuteData = new MuteDataBlock();
}
- public MuteListRequestPacket(byte[] bytes, ref int i)
+ public MuteListRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- MuteData = new MuteDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MuteListRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MuteData.FromBytes(bytes, ref i);
+ }
+
+ public MuteListRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- MuteData = new MuteDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MuteData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -36495,11 +43818,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -36553,11 +43881,16 @@ namespace libsecondlife.Packets
public MuteDataBlock() { }
public MuteDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- MuteID = new LLUUID(bytes, i); i += 16;
+ MuteID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_mutename = new byte[length];
Buffer.BlockCopy(bytes, i, _mutename, 0, length); i += length;
@@ -36614,19 +43947,40 @@ namespace libsecondlife.Packets
MuteData = new MuteDataBlock();
}
- public UpdateMuteListEntryPacket(byte[] bytes, ref int i)
+ public UpdateMuteListEntryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- MuteData = new MuteDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UpdateMuteListEntryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MuteData.FromBytes(bytes, ref i);
+ }
+
+ public UpdateMuteListEntryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- MuteData = new MuteDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MuteData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -36672,11 +44026,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -36728,11 +44087,16 @@ namespace libsecondlife.Packets
public MuteDataBlock() { }
public MuteDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- MuteID = new LLUUID(bytes, i); i += 16;
+ MuteID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_mutename = new byte[length];
Buffer.BlockCopy(bytes, i, _mutename, 0, length); i += length;
@@ -36776,19 +44140,40 @@ namespace libsecondlife.Packets
MuteData = new MuteDataBlock();
}
- public RemoveMuteListEntryPacket(byte[] bytes, ref int i)
+ public RemoveMuteListEntryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- MuteData = new MuteDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RemoveMuteListEntryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MuteData.FromBytes(bytes, ref i);
+ }
+
+ public RemoveMuteListEntryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- MuteData = new MuteDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MuteData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -36834,11 +44219,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -36878,11 +44268,16 @@ namespace libsecondlife.Packets
public NotecardDataBlock() { }
public NotecardDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- NotecardItemID = new LLUUID(bytes, i); i += 16;
- ObjectID = new LLUUID(bytes, i); i += 16;
+ NotecardItemID.FromBytes(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -36922,11 +44317,16 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
- FolderID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -36967,27 +44367,54 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock[0];
}
- public CopyInventoryFromNotecardPacket(byte[] bytes, ref int i)
+ public CopyInventoryFromNotecardPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- NotecardData = new NotecardDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
- for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public CopyInventoryFromNotecardPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ NotecardData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { InventoryData[j].FromBytes(bytes, ref i); }
+ }
+
+ public CopyInventoryFromNotecardPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- NotecardData = new NotecardDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ NotecardData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ { InventoryData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -37042,12 +44469,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- TransactionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -37132,23 +44564,28 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
- FolderID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
CallbackID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- CreatorID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ CreatorID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
BaseMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
OwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
EveryoneMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
NextOwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupOwned = (bytes[i++] != 0) ? (bool)true : (bool)false;
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
Type = (sbyte)bytes[i++];
InvType = (sbyte)bytes[i++];
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -37276,25 +44713,52 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock[0];
}
- public UpdateInventoryItemPacket(byte[] bytes, ref int i)
+ public UpdateInventoryItemPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
- for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UpdateInventoryItemPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { InventoryData[j].FromBytes(bytes, ref i); }
+ }
+
+ public UpdateInventoryItemPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ { InventoryData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -37347,12 +44811,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
SimApproved = (bytes[i++] != 0) ? (bool)true : (bool)false;
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -37437,23 +44906,28 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
- FolderID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
CallbackID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- CreatorID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ CreatorID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
BaseMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
OwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
EveryoneMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
NextOwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupOwned = (bytes[i++] != 0) ? (bool)true : (bool)false;
- AssetID = new LLUUID(bytes, i); i += 16;
+ AssetID.FromBytes(bytes, i); i += 16;
Type = (sbyte)bytes[i++];
InvType = (sbyte)bytes[i++];
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -37581,25 +45055,52 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock[0];
}
- public UpdateCreateInventoryItemPacket(byte[] bytes, ref int i)
+ public UpdateCreateInventoryItemPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
- for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UpdateCreateInventoryItemPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { InventoryData[j].FromBytes(bytes, ref i); }
+ }
+
+ public UpdateCreateInventoryItemPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ { InventoryData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -37652,11 +45153,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
Stamp = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -37712,12 +45218,17 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
- FolderID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_newname = new byte[length];
Buffer.BlockCopy(bytes, i, _newname, 0, length); i += length;
@@ -37763,25 +45274,52 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock[0];
}
- public MoveInventoryItemPacket(byte[] bytes, ref int i)
+ public MoveInventoryItemPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
- for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MoveInventoryItemPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { InventoryData[j].FromBytes(bytes, ref i); }
+ }
+
+ public MoveInventoryItemPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ { InventoryData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -37833,11 +45371,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -37892,14 +45435,19 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
CallbackID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- OldAgentID = new LLUUID(bytes, i); i += 16;
- OldItemID = new LLUUID(bytes, i); i += 16;
- NewFolderID = new LLUUID(bytes, i); i += 16;
+ OldAgentID.FromBytes(bytes, i); i += 16;
+ OldItemID.FromBytes(bytes, i); i += 16;
+ NewFolderID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_newname = new byte[length];
Buffer.BlockCopy(bytes, i, _newname, 0, length); i += length;
@@ -37952,25 +45500,52 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock[0];
}
- public CopyInventoryItemPacket(byte[] bytes, ref int i)
+ public CopyInventoryItemPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
- for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public CopyInventoryItemPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { InventoryData[j].FromBytes(bytes, ref i); }
+ }
+
+ public CopyInventoryItemPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ { InventoryData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -38022,11 +45597,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -38065,10 +45645,15 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -38105,25 +45690,52 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock[0];
}
- public RemoveInventoryItemPacket(byte[] bytes, ref int i)
+ public RemoveInventoryItemPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
- for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RemoveInventoryItemPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { InventoryData[j].FromBytes(bytes, ref i); }
+ }
+
+ public RemoveInventoryItemPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ { InventoryData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -38175,11 +45787,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -38219,10 +45836,15 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -38265,25 +45887,52 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock[0];
}
- public ChangeInventoryItemFlagsPacket(byte[] bytes, ref int i)
+ public ChangeInventoryItemFlagsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
- for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ChangeInventoryItemFlagsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { InventoryData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ChangeInventoryItemFlagsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ { InventoryData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -38334,10 +45983,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -38375,11 +46029,16 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
- NewAssetID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ NewAssetID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -38418,19 +46077,40 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock();
}
- public SaveAssetIntoInventoryPacket(byte[] bytes, ref int i)
+ public SaveAssetIntoInventoryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public SaveAssetIntoInventoryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
+ }
+
+ public SaveAssetIntoInventoryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -38476,11 +46156,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -38534,12 +46219,17 @@ namespace libsecondlife.Packets
public FolderDataBlock() { }
public FolderDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- FolderID = new LLUUID(bytes, i); i += 16;
- ParentID = new LLUUID(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
+ ParentID.FromBytes(bytes, i); i += 16;
Type = (sbyte)bytes[i++];
length = (ushort)bytes[i++];
_name = new byte[length];
@@ -38588,19 +46278,40 @@ namespace libsecondlife.Packets
FolderData = new FolderDataBlock();
}
- public CreateInventoryFolderPacket(byte[] bytes, ref int i)
+ public CreateInventoryFolderPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- FolderData = new FolderDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public CreateInventoryFolderPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ FolderData.FromBytes(bytes, ref i);
+ }
+
+ public CreateInventoryFolderPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- FolderData = new FolderDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ FolderData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -38646,11 +46357,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -38704,12 +46420,17 @@ namespace libsecondlife.Packets
public FolderDataBlock() { }
public FolderDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- FolderID = new LLUUID(bytes, i); i += 16;
- ParentID = new LLUUID(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
+ ParentID.FromBytes(bytes, i); i += 16;
Type = (sbyte)bytes[i++];
length = (ushort)bytes[i++];
_name = new byte[length];
@@ -38758,25 +46479,52 @@ namespace libsecondlife.Packets
FolderData = new FolderDataBlock[0];
}
- public UpdateInventoryFolderPacket(byte[] bytes, ref int i)
+ public UpdateInventoryFolderPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- FolderData = new FolderDataBlock[count];
- for (int j = 0; j < count; j++)
- { FolderData[j] = new FolderDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UpdateInventoryFolderPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(FolderData.Length < count) {
+ FolderData = new FolderDataBlock[count];
+ for(int j = 0; j < count; j++) FolderData[j] = new FolderDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { FolderData[j].FromBytes(bytes, ref i); }
+ }
+
+ public UpdateInventoryFolderPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- FolderData = new FolderDataBlock[count];
+ if(FolderData.Length < count) {
+ FolderData = new FolderDataBlock[count];
+ for(int j = 0; j < count; j++) FolderData[j] = new FolderDataBlock();
+ }
for (int j = 0; j < count; j++)
- { FolderData[j] = new FolderDataBlock(bytes, ref i); }
+ { FolderData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -38829,11 +46577,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
Stamp = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -38876,11 +46629,16 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- FolderID = new LLUUID(bytes, i); i += 16;
- ParentID = new LLUUID(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
+ ParentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -38919,25 +46677,52 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock[0];
}
- public MoveInventoryFolderPacket(byte[] bytes, ref int i)
+ public MoveInventoryFolderPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
- for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MoveInventoryFolderPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { InventoryData[j].FromBytes(bytes, ref i); }
+ }
+
+ public MoveInventoryFolderPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ { InventoryData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -38989,11 +46774,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -39032,10 +46822,15 @@ namespace libsecondlife.Packets
public FolderDataBlock() { }
public FolderDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- FolderID = new LLUUID(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -39072,25 +46867,52 @@ namespace libsecondlife.Packets
FolderData = new FolderDataBlock[0];
}
- public RemoveInventoryFolderPacket(byte[] bytes, ref int i)
+ public RemoveInventoryFolderPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- FolderData = new FolderDataBlock[count];
- for (int j = 0; j < count; j++)
- { FolderData[j] = new FolderDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RemoveInventoryFolderPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(FolderData.Length < count) {
+ FolderData = new FolderDataBlock[count];
+ for(int j = 0; j < count; j++) FolderData[j] = new FolderDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { FolderData[j].FromBytes(bytes, ref i); }
+ }
+
+ public RemoveInventoryFolderPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- FolderData = new FolderDataBlock[count];
+ if(FolderData.Length < count) {
+ FolderData = new FolderDataBlock[count];
+ for(int j = 0; j < count; j++) FolderData[j] = new FolderDataBlock();
+ }
for (int j = 0; j < count; j++)
- { FolderData[j] = new FolderDataBlock(bytes, ref i); }
+ { FolderData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -39142,11 +46964,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -39189,11 +47016,16 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- FolderID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
SortOrder = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
FetchFolders = (bytes[i++] != 0) ? (bool)true : (bool)false;
FetchItems = (bytes[i++] != 0) ? (bool)true : (bool)false;
@@ -39244,19 +47076,40 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock();
}
- public FetchInventoryDescendentsPacket(byte[] bytes, ref int i)
+ public FetchInventoryDescendentsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public FetchInventoryDescendentsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
+ }
+
+ public FetchInventoryDescendentsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -39305,12 +47158,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- FolderID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
Version = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Descendents = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
@@ -39378,12 +47236,17 @@ namespace libsecondlife.Packets
public FolderDataBlock() { }
public FolderDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- FolderID = new LLUUID(bytes, i); i += 16;
- ParentID = new LLUUID(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
+ ParentID.FromBytes(bytes, i); i += 16;
Type = (sbyte)bytes[i++];
length = (ushort)bytes[i++];
_name = new byte[length];
@@ -39475,22 +47338,27 @@ namespace libsecondlife.Packets
public ItemDataBlock() { }
public ItemDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
- FolderID = new LLUUID(bytes, i); i += 16;
- CreatorID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
+ CreatorID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
BaseMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
OwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
EveryoneMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
NextOwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupOwned = (bytes[i++] != 0) ? (bool)true : (bool)false;
- AssetID = new LLUUID(bytes, i); i += 16;
+ AssetID.FromBytes(bytes, i); i += 16;
Type = (sbyte)bytes[i++];
InvType = (sbyte)bytes[i++];
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -39615,33 +47483,66 @@ namespace libsecondlife.Packets
ItemData = new ItemDataBlock[0];
}
- public InventoryDescendentsPacket(byte[] bytes, ref int i)
+ public InventoryDescendentsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- FolderData = new FolderDataBlock[count];
- for (int j = 0; j < count; j++)
- { FolderData[j] = new FolderDataBlock(bytes, ref i); }
- count = (int)bytes[i++];
- ItemData = new ItemDataBlock[count];
- for (int j = 0; j < count; j++)
- { ItemData[j] = new ItemDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public InventoryDescendentsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(FolderData.Length < count) {
+ FolderData = new FolderDataBlock[count];
+ for(int j = 0; j < count; j++) FolderData[j] = new FolderDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { FolderData[j].FromBytes(bytes, ref i); }
+ count = (int)bytes[i++];
+ if(ItemData.Length < count) {
+ ItemData = new ItemDataBlock[count];
+ for(int j = 0; j < count; j++) ItemData[j] = new ItemDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ItemData[j].FromBytes(bytes, ref i); }
+ }
+
+ public InventoryDescendentsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- FolderData = new FolderDataBlock[count];
+ if(FolderData.Length < count) {
+ FolderData = new FolderDataBlock[count];
+ for(int j = 0; j < count; j++) FolderData[j] = new FolderDataBlock();
+ }
for (int j = 0; j < count; j++)
- { FolderData[j] = new FolderDataBlock(bytes, ref i); }
+ { FolderData[j].FromBytes(bytes, ref i); }
count = (int)bytes[i++];
- ItemData = new ItemDataBlock[count];
+ if(ItemData.Length < count) {
+ ItemData = new ItemDataBlock[count];
+ for(int j = 0; j < count; j++) ItemData[j] = new ItemDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ItemData[j] = new ItemDataBlock(bytes, ref i); }
+ { ItemData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -39701,11 +47602,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -39745,11 +47651,16 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- OwnerID = new LLUUID(bytes, i); i += 16;
- ItemID = new LLUUID(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -39788,25 +47699,52 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock[0];
}
- public FetchInventoryPacket(byte[] bytes, ref int i)
+ public FetchInventoryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
- for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public FetchInventoryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { InventoryData[j].FromBytes(bytes, ref i); }
+ }
+
+ public FetchInventoryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ { InventoryData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -39857,10 +47795,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -39940,22 +47883,27 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
- FolderID = new LLUUID(bytes, i); i += 16;
- CreatorID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
+ CreatorID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
BaseMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
OwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
EveryoneMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
NextOwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupOwned = (bytes[i++] != 0) ? (bool)true : (bool)false;
- AssetID = new LLUUID(bytes, i); i += 16;
+ AssetID.FromBytes(bytes, i); i += 16;
Type = (sbyte)bytes[i++];
InvType = (sbyte)bytes[i++];
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -40078,25 +48026,52 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock[0];
}
- public FetchInventoryReplyPacket(byte[] bytes, ref int i)
+ public FetchInventoryReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
- for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public FetchInventoryReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { InventoryData[j].FromBytes(bytes, ref i); }
+ }
+
+ public FetchInventoryReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ { InventoryData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -40148,11 +48123,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- TransactionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -40206,12 +48186,17 @@ namespace libsecondlife.Packets
public FolderDataBlock() { }
public FolderDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- FolderID = new LLUUID(bytes, i); i += 16;
- ParentID = new LLUUID(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
+ ParentID.FromBytes(bytes, i); i += 16;
Type = (sbyte)bytes[i++];
length = (ushort)bytes[i++];
_name = new byte[length];
@@ -40304,23 +48289,28 @@ namespace libsecondlife.Packets
public ItemDataBlock() { }
public ItemDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
CallbackID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- FolderID = new LLUUID(bytes, i); i += 16;
- CreatorID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
+ CreatorID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
BaseMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
OwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
EveryoneMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
NextOwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupOwned = (bytes[i++] != 0) ? (bool)true : (bool)false;
- AssetID = new LLUUID(bytes, i); i += 16;
+ AssetID.FromBytes(bytes, i); i += 16;
Type = (sbyte)bytes[i++];
InvType = (sbyte)bytes[i++];
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -40450,33 +48440,66 @@ namespace libsecondlife.Packets
ItemData = new ItemDataBlock[0];
}
- public BulkUpdateInventoryPacket(byte[] bytes, ref int i)
+ public BulkUpdateInventoryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- FolderData = new FolderDataBlock[count];
- for (int j = 0; j < count; j++)
- { FolderData[j] = new FolderDataBlock(bytes, ref i); }
- count = (int)bytes[i++];
- ItemData = new ItemDataBlock[count];
- for (int j = 0; j < count; j++)
- { ItemData[j] = new ItemDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public BulkUpdateInventoryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(FolderData.Length < count) {
+ FolderData = new FolderDataBlock[count];
+ for(int j = 0; j < count; j++) FolderData[j] = new FolderDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { FolderData[j].FromBytes(bytes, ref i); }
+ count = (int)bytes[i++];
+ if(ItemData.Length < count) {
+ ItemData = new ItemDataBlock[count];
+ for(int j = 0; j < count; j++) ItemData[j] = new ItemDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ItemData[j].FromBytes(bytes, ref i); }
+ }
+
+ public BulkUpdateInventoryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- FolderData = new FolderDataBlock[count];
+ if(FolderData.Length < count) {
+ FolderData = new FolderDataBlock[count];
+ for(int j = 0; j < count; j++) FolderData[j] = new FolderDataBlock();
+ }
for (int j = 0; j < count; j++)
- { FolderData[j] = new FolderDataBlock(bytes, ref i); }
+ { FolderData[j].FromBytes(bytes, ref i); }
count = (int)bytes[i++];
- ItemData = new ItemDataBlock[count];
+ if(ItemData.Length < count) {
+ ItemData = new ItemDataBlock[count];
+ for(int j = 0; j < count; j++) ItemData[j] = new ItemDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ItemData[j] = new ItemDataBlock(bytes, ref i); }
+ { ItemData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -40538,13 +48561,18 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- QueryID = new LLUUID(bytes, i); i += 16;
- AgentID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
- ItemID = new LLUUID(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -40585,17 +48613,38 @@ namespace libsecondlife.Packets
QueryData = new QueryDataBlock();
}
- public RequestInventoryAssetPacket(byte[] bytes, ref int i)
+ public RequestInventoryAssetPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- QueryData = new QueryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RequestInventoryAssetPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ QueryData.FromBytes(bytes, ref i);
+ }
+
+ public RequestInventoryAssetPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- QueryData = new QueryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ QueryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -40640,11 +48689,16 @@ namespace libsecondlife.Packets
public QueryDataBlock() { }
public QueryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- QueryID = new LLUUID(bytes, i); i += 16;
- AssetID = new LLUUID(bytes, i); i += 16;
+ QueryID.FromBytes(bytes, i); i += 16;
+ AssetID.FromBytes(bytes, i); i += 16;
IsReadable = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -40684,17 +48738,38 @@ namespace libsecondlife.Packets
QueryData = new QueryDataBlock();
}
- public InventoryAssetResponsePacket(byte[] bytes, ref int i)
+ public InventoryAssetResponsePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- QueryData = new QueryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public InventoryAssetResponsePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ QueryData.FromBytes(bytes, ref i);
+ }
+
+ public InventoryAssetResponsePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- QueryData = new QueryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ QueryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -40738,11 +48813,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -40781,10 +48861,15 @@ namespace libsecondlife.Packets
public FolderDataBlock() { }
public FolderDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- FolderID = new LLUUID(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -40821,10 +48906,15 @@ namespace libsecondlife.Packets
public ItemDataBlock() { }
public ItemDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -40863,33 +48953,66 @@ namespace libsecondlife.Packets
ItemData = new ItemDataBlock[0];
}
- public RemoveInventoryObjectsPacket(byte[] bytes, ref int i)
+ public RemoveInventoryObjectsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- FolderData = new FolderDataBlock[count];
- for (int j = 0; j < count; j++)
- { FolderData[j] = new FolderDataBlock(bytes, ref i); }
- count = (int)bytes[i++];
- ItemData = new ItemDataBlock[count];
- for (int j = 0; j < count; j++)
- { ItemData[j] = new ItemDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RemoveInventoryObjectsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(FolderData.Length < count) {
+ FolderData = new FolderDataBlock[count];
+ for(int j = 0; j < count; j++) FolderData[j] = new FolderDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { FolderData[j].FromBytes(bytes, ref i); }
+ count = (int)bytes[i++];
+ if(ItemData.Length < count) {
+ ItemData = new ItemDataBlock[count];
+ for(int j = 0; j < count; j++) ItemData[j] = new ItemDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ItemData[j].FromBytes(bytes, ref i); }
+ }
+
+ public RemoveInventoryObjectsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- FolderData = new FolderDataBlock[count];
+ if(FolderData.Length < count) {
+ FolderData = new FolderDataBlock[count];
+ for(int j = 0; j < count; j++) FolderData[j] = new FolderDataBlock();
+ }
for (int j = 0; j < count; j++)
- { FolderData[j] = new FolderDataBlock(bytes, ref i); }
+ { FolderData[j].FromBytes(bytes, ref i); }
count = (int)bytes[i++];
- ItemData = new ItemDataBlock[count];
+ if(ItemData.Length < count) {
+ ItemData = new ItemDataBlock[count];
+ for(int j = 0; j < count; j++) ItemData[j] = new ItemDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ItemData[j] = new ItemDataBlock(bytes, ref i); }
+ { ItemData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -40949,11 +49072,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -40992,10 +49120,15 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- FolderID = new LLUUID(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -41032,19 +49165,40 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock();
}
- public PurgeInventoryDescendentsPacket(byte[] bytes, ref int i)
+ public PurgeInventoryDescendentsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public PurgeInventoryDescendentsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
+ }
+
+ public PurgeInventoryDescendentsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -41090,11 +49244,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -41134,6 +49293,11 @@ namespace libsecondlife.Packets
public UpdateDataBlock() { }
public UpdateDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -41223,22 +49387,27 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
- FolderID = new LLUUID(bytes, i); i += 16;
- CreatorID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
+ CreatorID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
BaseMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
OwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
EveryoneMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
NextOwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupOwned = (bytes[i++] != 0) ? (bool)true : (bool)false;
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
Type = (sbyte)bytes[i++];
InvType = (sbyte)bytes[i++];
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -41363,21 +49532,42 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock();
}
- public UpdateTaskInventoryPacket(byte[] bytes, ref int i)
+ public UpdateTaskInventoryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- UpdateData = new UpdateDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UpdateTaskInventoryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ UpdateData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
+ }
+
+ public UpdateTaskInventoryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- UpdateData = new UpdateDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ UpdateData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -41425,11 +49615,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -41469,11 +49664,16 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
LocalID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- ItemID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -41515,19 +49715,40 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock();
}
- public RemoveTaskInventoryPacket(byte[] bytes, ref int i)
+ public RemoveTaskInventoryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RemoveTaskInventoryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
+ }
+
+ public RemoveTaskInventoryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -41574,12 +49795,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- FolderID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -41621,11 +49847,16 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
LocalID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- ItemID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -41667,19 +49898,40 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock();
}
- public MoveTaskInventoryPacket(byte[] bytes, ref int i)
+ public MoveTaskInventoryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MoveTaskInventoryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
+ }
+
+ public MoveTaskInventoryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -41725,11 +49977,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -41768,6 +50025,11 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -41811,19 +50073,40 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock();
}
- public RequestTaskInventoryPacket(byte[] bytes, ref int i)
+ public RequestTaskInventoryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RequestTaskInventoryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
+ }
+
+ public RequestTaskInventoryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -41882,11 +50165,16 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- TaskID = new LLUUID(bytes, i); i += 16;
+ TaskID.FromBytes(bytes, i); i += 16;
Serial = (short)(bytes[i++] + (bytes[i++] << 8));
length = (ushort)bytes[i++];
_filename = new byte[length];
@@ -41932,17 +50220,38 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock();
}
- public ReplyTaskInventoryPacket(byte[] bytes, ref int i)
+ public ReplyTaskInventoryPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ReplyTaskInventoryPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ InventoryData.FromBytes(bytes, ref i);
+ }
+
+ public ReplyTaskInventoryPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ InventoryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -41986,11 +50295,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -42034,13 +50348,18 @@ namespace libsecondlife.Packets
public AgentBlockBlock() { }
public AgentBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
Destination = (byte)bytes[i++];
- DestinationID = new LLUUID(bytes, i); i += 16;
- TransactionID = new LLUUID(bytes, i); i += 16;
+ DestinationID.FromBytes(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
PacketCount = (byte)bytes[i++];
PacketNumber = (byte)bytes[i++];
}
@@ -42089,6 +50408,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -42134,27 +50458,54 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public DeRezObjectPacket(byte[] bytes, ref int i)
+ public DeRezObjectPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- AgentBlock = new AgentBlockBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DeRezObjectPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ AgentBlock.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public DeRezObjectPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- AgentBlock = new AgentBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ AgentBlock.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -42208,10 +50559,15 @@ namespace libsecondlife.Packets
public TransactionDataBlock() { }
public TransactionDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
Success = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -42249,17 +50605,38 @@ namespace libsecondlife.Packets
TransactionData = new TransactionDataBlock();
}
- public DeRezAckPacket(byte[] bytes, ref int i)
+ public DeRezAckPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- TransactionData = new TransactionDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DeRezAckPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TransactionData.FromBytes(bytes, ref i);
+ }
+
+ public DeRezAckPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- TransactionData = new TransactionDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TransactionData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -42304,12 +50681,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -42361,14 +50743,19 @@ namespace libsecondlife.Packets
public RezDataBlock() { }
public RezDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- FromTaskID = new LLUUID(bytes, i); i += 16;
+ FromTaskID.FromBytes(bytes, i); i += 16;
BypassRaycast = (byte)bytes[i++];
- RayStart = new LLVector3(bytes, i); i += 12;
- RayEnd = new LLVector3(bytes, i); i += 12;
- RayTargetID = new LLUUID(bytes, i); i += 16;
+ RayStart.FromBytes(bytes, i); i += 12;
+ RayEnd.FromBytes(bytes, i); i += 12;
+ RayTargetID.FromBytes(bytes, i); i += 16;
RayEndIsIntersection = (bytes[i++] != 0) ? (bool)true : (bool)false;
RezSelected = (bytes[i++] != 0) ? (bool)true : (bool)false;
RemoveItem = (bytes[i++] != 0) ? (bool)true : (bool)false;
@@ -42489,22 +50876,27 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
- FolderID = new LLUUID(bytes, i); i += 16;
- CreatorID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
+ CreatorID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
BaseMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
OwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
EveryoneMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
NextOwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupOwned = (bytes[i++] != 0) ? (bool)true : (bool)false;
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
Type = (sbyte)bytes[i++];
InvType = (sbyte)bytes[i++];
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -42629,21 +51021,42 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock();
}
- public RezObjectPacket(byte[] bytes, ref int i)
+ public RezObjectPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- RezData = new RezDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RezObjectPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RezData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
+ }
+
+ public RezObjectPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- RezData = new RezDataBlock(bytes, ref i);
- InventoryData = new InventoryDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RezData.FromBytes(bytes, ref i);
+ InventoryData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -42692,12 +51105,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -42749,14 +51167,19 @@ namespace libsecondlife.Packets
public RezDataBlock() { }
public RezDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- FromTaskID = new LLUUID(bytes, i); i += 16;
+ FromTaskID.FromBytes(bytes, i); i += 16;
BypassRaycast = (byte)bytes[i++];
- RayStart = new LLVector3(bytes, i); i += 12;
- RayEnd = new LLVector3(bytes, i); i += 12;
- RayTargetID = new LLUUID(bytes, i); i += 16;
+ RayStart.FromBytes(bytes, i); i += 12;
+ RayEnd.FromBytes(bytes, i); i += 12;
+ RayTargetID.FromBytes(bytes, i); i += 16;
RayEndIsIntersection = (bytes[i++] != 0) ? (bool)true : (bool)false;
RezSelected = (bytes[i++] != 0) ? (bool)true : (bool)false;
RemoveItem = (bytes[i++] != 0) ? (bool)true : (bool)false;
@@ -42835,11 +51258,16 @@ namespace libsecondlife.Packets
public NotecardDataBlock() { }
public NotecardDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- NotecardItemID = new LLUUID(bytes, i); i += 16;
- ObjectID = new LLUUID(bytes, i); i += 16;
+ NotecardItemID.FromBytes(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -42878,10 +51306,15 @@ namespace libsecondlife.Packets
public InventoryDataBlock() { }
public InventoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -42922,29 +51355,56 @@ namespace libsecondlife.Packets
InventoryData = new InventoryDataBlock[0];
}
- public RezObjectFromNotecardPacket(byte[] bytes, ref int i)
+ public RezObjectFromNotecardPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- RezData = new RezDataBlock(bytes, ref i);
- NotecardData = new NotecardDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
- for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RezObjectFromNotecardPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RezData.FromBytes(bytes, ref i);
+ NotecardData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { InventoryData[j].FromBytes(bytes, ref i); }
+ }
+
+ public RezObjectFromNotecardPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- RezData = new RezDataBlock(bytes, ref i);
- NotecardData = new NotecardDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RezData.FromBytes(bytes, ref i);
+ NotecardData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- InventoryData = new InventoryDataBlock[count];
+ if(InventoryData.Length < count) {
+ InventoryData = new InventoryDataBlock[count];
+ for(int j = 0; j < count; j++) InventoryData[j] = new InventoryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { InventoryData[j] = new InventoryDataBlock(bytes, ref i); }
+ { InventoryData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -43000,11 +51460,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -43043,10 +51508,15 @@ namespace libsecondlife.Packets
public TransactionBlockBlock() { }
public TransactionBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -43083,10 +51553,15 @@ namespace libsecondlife.Packets
public FolderDataBlock() { }
public FolderDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- FolderID = new LLUUID(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -43125,27 +51600,54 @@ namespace libsecondlife.Packets
FolderData = new FolderDataBlock[0];
}
- public AcceptFriendshipPacket(byte[] bytes, ref int i)
+ public AcceptFriendshipPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionBlock = new TransactionBlockBlock(bytes, ref i);
- int count = (int)bytes[i++];
- FolderData = new FolderDataBlock[count];
- for (int j = 0; j < count; j++)
- { FolderData[j] = new FolderDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AcceptFriendshipPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionBlock.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(FolderData.Length < count) {
+ FolderData = new FolderDataBlock[count];
+ for(int j = 0; j < count; j++) FolderData[j] = new FolderDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { FolderData[j].FromBytes(bytes, ref i); }
+ }
+
+ public AcceptFriendshipPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionBlock = new TransactionBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionBlock.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- FolderData = new FolderDataBlock[count];
+ if(FolderData.Length < count) {
+ FolderData = new FolderDataBlock[count];
+ for(int j = 0; j < count; j++) FolderData[j] = new FolderDataBlock();
+ }
for (int j = 0; j < count; j++)
- { FolderData[j] = new FolderDataBlock(bytes, ref i); }
+ { FolderData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -43199,11 +51701,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -43242,10 +51749,15 @@ namespace libsecondlife.Packets
public TransactionBlockBlock() { }
public TransactionBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -43282,19 +51794,40 @@ namespace libsecondlife.Packets
TransactionBlock = new TransactionBlockBlock();
}
- public DeclineFriendshipPacket(byte[] bytes, ref int i)
+ public DeclineFriendshipPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionBlock = new TransactionBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DeclineFriendshipPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionBlock.FromBytes(bytes, ref i);
+ }
+
+ public DeclineFriendshipPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionBlock = new TransactionBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -43340,11 +51873,16 @@ namespace libsecondlife.Packets
public AgentBlockBlock() { }
public AgentBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- SourceID = new LLUUID(bytes, i); i += 16;
- DestID = new LLUUID(bytes, i); i += 16;
+ SourceID.FromBytes(bytes, i); i += 16;
+ DestID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -43381,17 +51919,38 @@ namespace libsecondlife.Packets
AgentBlock = new AgentBlockBlock();
}
- public FormFriendshipPacket(byte[] bytes, ref int i)
+ public FormFriendshipPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentBlock = new AgentBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public FormFriendshipPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentBlock.FromBytes(bytes, ref i);
+ }
+
+ public FormFriendshipPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentBlock = new AgentBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -43435,11 +51994,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -43478,10 +52042,15 @@ namespace libsecondlife.Packets
public ExBlockBlock() { }
public ExBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- OtherID = new LLUUID(bytes, i); i += 16;
+ OtherID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -43518,19 +52087,40 @@ namespace libsecondlife.Packets
ExBlock = new ExBlockBlock();
}
- public TerminateFriendshipPacket(byte[] bytes, ref int i)
+ public TerminateFriendshipPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ExBlock = new ExBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TerminateFriendshipPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ExBlock.FromBytes(bytes, ref i);
+ }
+
+ public TerminateFriendshipPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ExBlock = new ExBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ExBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -43576,11 +52166,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -43620,11 +52215,16 @@ namespace libsecondlife.Packets
public AgentBlockBlock() { }
public AgentBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- DestID = new LLUUID(bytes, i); i += 16;
- TransactionID = new LLUUID(bytes, i); i += 16;
+ DestID.FromBytes(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -43663,19 +52263,40 @@ namespace libsecondlife.Packets
AgentBlock = new AgentBlockBlock();
}
- public OfferCallingCardPacket(byte[] bytes, ref int i)
+ public OfferCallingCardPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- AgentBlock = new AgentBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public OfferCallingCardPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ AgentBlock.FromBytes(bytes, ref i);
+ }
+
+ public OfferCallingCardPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- AgentBlock = new AgentBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ AgentBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -43721,11 +52342,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -43764,10 +52390,15 @@ namespace libsecondlife.Packets
public TransactionBlockBlock() { }
public TransactionBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -43804,10 +52435,15 @@ namespace libsecondlife.Packets
public FolderDataBlock() { }
public FolderDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- FolderID = new LLUUID(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -43846,27 +52482,54 @@ namespace libsecondlife.Packets
FolderData = new FolderDataBlock[0];
}
- public AcceptCallingCardPacket(byte[] bytes, ref int i)
+ public AcceptCallingCardPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionBlock = new TransactionBlockBlock(bytes, ref i);
- int count = (int)bytes[i++];
- FolderData = new FolderDataBlock[count];
- for (int j = 0; j < count; j++)
- { FolderData[j] = new FolderDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AcceptCallingCardPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionBlock.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(FolderData.Length < count) {
+ FolderData = new FolderDataBlock[count];
+ for(int j = 0; j < count; j++) FolderData[j] = new FolderDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { FolderData[j].FromBytes(bytes, ref i); }
+ }
+
+ public AcceptCallingCardPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionBlock = new TransactionBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionBlock.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- FolderData = new FolderDataBlock[count];
+ if(FolderData.Length < count) {
+ FolderData = new FolderDataBlock[count];
+ for(int j = 0; j < count; j++) FolderData[j] = new FolderDataBlock();
+ }
for (int j = 0; j < count; j++)
- { FolderData[j] = new FolderDataBlock(bytes, ref i); }
+ { FolderData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -43920,11 +52583,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -43963,10 +52631,15 @@ namespace libsecondlife.Packets
public TransactionBlockBlock() { }
public TransactionBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -44003,19 +52676,40 @@ namespace libsecondlife.Packets
TransactionBlock = new TransactionBlockBlock();
}
- public DeclineCallingCardPacket(byte[] bytes, ref int i)
+ public DeclineCallingCardPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionBlock = new TransactionBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DeclineCallingCardPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionBlock.FromBytes(bytes, ref i);
+ }
+
+ public DeclineCallingCardPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionBlock = new TransactionBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -44062,12 +52756,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -44109,6 +52808,11 @@ namespace libsecondlife.Packets
public UpdateBlockBlock() { }
public UpdateBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -44198,22 +52902,27 @@ namespace libsecondlife.Packets
public InventoryBlockBlock() { }
public InventoryBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
- FolderID = new LLUUID(bytes, i); i += 16;
- CreatorID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
+ CreatorID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
BaseMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
OwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
EveryoneMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
NextOwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupOwned = (bytes[i++] != 0) ? (bool)true : (bool)false;
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
Type = (sbyte)bytes[i++];
InvType = (sbyte)bytes[i++];
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -44338,21 +53047,42 @@ namespace libsecondlife.Packets
InventoryBlock = new InventoryBlockBlock();
}
- public RezScriptPacket(byte[] bytes, ref int i)
+ public RezScriptPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- UpdateBlock = new UpdateBlockBlock(bytes, ref i);
- InventoryBlock = new InventoryBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RezScriptPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ UpdateBlock.FromBytes(bytes, ref i);
+ InventoryBlock.FromBytes(bytes, ref i);
+ }
+
+ public RezScriptPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- UpdateBlock = new UpdateBlockBlock(bytes, ref i);
- InventoryBlock = new InventoryBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ UpdateBlock.FromBytes(bytes, ref i);
+ InventoryBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -44400,11 +53130,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -44474,13 +53209,18 @@ namespace libsecondlife.Packets
public InventoryBlockBlock() { }
public InventoryBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
CallbackID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- FolderID = new LLUUID(bytes, i); i += 16;
- TransactionID = new LLUUID(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
NextOwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Type = (sbyte)bytes[i++];
InvType = (sbyte)bytes[i++];
@@ -44554,19 +53294,40 @@ namespace libsecondlife.Packets
InventoryBlock = new InventoryBlockBlock();
}
- public CreateInventoryItemPacket(byte[] bytes, ref int i)
+ public CreateInventoryItemPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- InventoryBlock = new InventoryBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public CreateInventoryItemPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ InventoryBlock.FromBytes(bytes, ref i);
+ }
+
+ public CreateInventoryItemPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- InventoryBlock = new InventoryBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ InventoryBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -44612,11 +53373,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -44655,6 +53421,11 @@ namespace libsecondlife.Packets
public EventDataBlock() { }
public EventDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -44711,11 +53482,16 @@ namespace libsecondlife.Packets
public InventoryBlockBlock() { }
public InventoryBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- FolderID = new LLUUID(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
@@ -44761,21 +53537,42 @@ namespace libsecondlife.Packets
InventoryBlock = new InventoryBlockBlock();
}
- public CreateLandmarkForEventPacket(byte[] bytes, ref int i)
+ public CreateLandmarkForEventPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- EventData = new EventDataBlock(bytes, ref i);
- InventoryBlock = new InventoryBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public CreateLandmarkForEventPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ EventData.FromBytes(bytes, ref i);
+ InventoryBlock.FromBytes(bytes, ref i);
+ }
+
+ public CreateLandmarkForEventPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- EventData = new EventDataBlock(bytes, ref i);
- InventoryBlock = new InventoryBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ EventData.FromBytes(bytes, ref i);
+ InventoryBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -44822,10 +53619,15 @@ namespace libsecondlife.Packets
public RequestBlockBlock() { }
public RequestBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- RegionID = new LLUUID(bytes, i); i += 16;
+ RegionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -44860,17 +53662,38 @@ namespace libsecondlife.Packets
RequestBlock = new RequestBlockBlock();
}
- public RegionHandleRequestPacket(byte[] bytes, ref int i)
+ public RegionHandleRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- RequestBlock = new RequestBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RegionHandleRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RequestBlock.FromBytes(bytes, ref i);
+ }
+
+ public RegionHandleRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- RequestBlock = new RequestBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RequestBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -44914,10 +53737,15 @@ namespace libsecondlife.Packets
public ReplyBlockBlock() { }
public ReplyBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- RegionID = new LLUUID(bytes, i); i += 16;
+ RegionID.FromBytes(bytes, i); i += 16;
RegionHandle = (ulong)((ulong)bytes[i++] + ((ulong)bytes[i++] << 8) + ((ulong)bytes[i++] << 16) + ((ulong)bytes[i++] << 24) + ((ulong)bytes[i++] << 32) + ((ulong)bytes[i++] << 40) + ((ulong)bytes[i++] << 48) + ((ulong)bytes[i++] << 56));
}
catch (Exception)
@@ -44962,17 +53790,38 @@ namespace libsecondlife.Packets
ReplyBlock = new ReplyBlockBlock();
}
- public RegionIDAndHandleReplyPacket(byte[] bytes, ref int i)
+ public RegionIDAndHandleReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- ReplyBlock = new ReplyBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RegionIDAndHandleReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ReplyBlock.FromBytes(bytes, ref i);
+ }
+
+ public RegionIDAndHandleReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- ReplyBlock = new ReplyBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ReplyBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -45016,11 +53865,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -45078,12 +53932,17 @@ namespace libsecondlife.Packets
public MoneyDataBlock() { }
public MoneyDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- SourceID = new LLUUID(bytes, i); i += 16;
- DestID = new LLUUID(bytes, i); i += 16;
+ SourceID.FromBytes(bytes, i); i += 16;
+ DestID.FromBytes(bytes, i); i += 16;
Flags = (byte)bytes[i++];
Amount = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
AggregatePermNextOwner = (byte)bytes[i++];
@@ -45150,19 +54009,40 @@ namespace libsecondlife.Packets
MoneyData = new MoneyDataBlock();
}
- public MoneyTransferRequestPacket(byte[] bytes, ref int i)
+ public MoneyTransferRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MoneyTransferRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
+ }
+
+ public MoneyTransferRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -45208,11 +54088,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -45251,10 +54136,15 @@ namespace libsecondlife.Packets
public MoneyDataBlock() { }
public MoneyDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -45291,19 +54181,40 @@ namespace libsecondlife.Packets
MoneyData = new MoneyDataBlock();
}
- public MoneyBalanceRequestPacket(byte[] bytes, ref int i)
+ public MoneyBalanceRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MoneyBalanceRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
+ }
+
+ public MoneyBalanceRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -45366,12 +54277,17 @@ namespace libsecondlife.Packets
public MoneyDataBlock() { }
public MoneyDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- TransactionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
TransactionSuccess = (bytes[i++] != 0) ? (bool)true : (bool)false;
MoneyBalance = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
SquareMetersCredit = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -45436,17 +54352,38 @@ namespace libsecondlife.Packets
MoneyData = new MoneyDataBlock();
}
- public MoneyBalanceReplyPacket(byte[] bytes, ref int i)
+ public MoneyBalanceReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MoneyBalanceReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ MoneyData.FromBytes(bytes, ref i);
+ }
+
+ public MoneyBalanceReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ MoneyData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -45490,6 +54427,11 @@ namespace libsecondlife.Packets
public TargetBlockBlock() { }
public TargetBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -45555,12 +54497,17 @@ namespace libsecondlife.Packets
public MoneyDataBlock() { }
public MoneyDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- TransactionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
TransactionSuccess = (bytes[i++] != 0) ? (bool)true : (bool)false;
MoneyBalance = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
SquareMetersCredit = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -45627,19 +54574,40 @@ namespace libsecondlife.Packets
MoneyData = new MoneyDataBlock();
}
- public RoutedMoneyBalanceReplyPacket(byte[] bytes, ref int i)
+ public RoutedMoneyBalanceReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- TargetBlock = new TargetBlockBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RoutedMoneyBalanceReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TargetBlock.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
+ }
+
+ public RoutedMoneyBalanceReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- TargetBlock = new TargetBlockBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TargetBlock.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -45686,11 +54654,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -45737,11 +54710,16 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
- AssetID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ AssetID.FromBytes(bytes, i); i += 16;
GestureFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -45786,25 +54764,52 @@ namespace libsecondlife.Packets
Data = new DataBlock[0];
}
- public ActivateGesturesPacket(byte[] bytes, ref int i)
+ public ActivateGesturesPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- Data = new DataBlock[count];
- for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ActivateGesturesPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Data[j].FromBytes(bytes, ref i); }
+ }
+
+ public ActivateGesturesPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- Data = new DataBlock[count];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ { Data[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -45857,11 +54862,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -45907,10 +54917,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
GestureFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -45953,25 +54968,52 @@ namespace libsecondlife.Packets
Data = new DataBlock[0];
}
- public DeactivateGesturesPacket(byte[] bytes, ref int i)
+ public DeactivateGesturesPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- Data = new DataBlock[count];
- for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DeactivateGesturesPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Data[j].FromBytes(bytes, ref i); }
+ }
+
+ public DeactivateGesturesPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- Data = new DataBlock[count];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ { Data[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -46035,11 +55077,16 @@ namespace libsecondlife.Packets
public MuteDataBlock() { }
public MuteDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_filename = new byte[length];
Buffer.BlockCopy(bytes, i, _filename, 0, length); i += length;
@@ -46081,17 +55128,38 @@ namespace libsecondlife.Packets
MuteData = new MuteDataBlock();
}
- public MuteListUpdatePacket(byte[] bytes, ref int i)
+ public MuteListUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- MuteData = new MuteDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MuteListUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ MuteData.FromBytes(bytes, ref i);
+ }
+
+ public MuteListUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- MuteData = new MuteDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ MuteData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -46134,10 +55202,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -46172,17 +55245,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public UseCachedMuteListPacket(byte[] bytes, ref int i)
+ public UseCachedMuteListPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UseCachedMuteListPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public UseCachedMuteListPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -46226,11 +55320,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -46270,10 +55369,15 @@ namespace libsecondlife.Packets
public RightsBlock() { }
public RightsBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentRelated = new LLUUID(bytes, i); i += 16;
+ AgentRelated.FromBytes(bytes, i); i += 16;
RelatedRights = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -46316,25 +55420,52 @@ namespace libsecondlife.Packets
Rights = new RightsBlock[0];
}
- public GrantUserRightsPacket(byte[] bytes, ref int i)
+ public GrantUserRightsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- Rights = new RightsBlock[count];
- for (int j = 0; j < count; j++)
- { Rights[j] = new RightsBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GrantUserRightsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(Rights.Length < count) {
+ Rights = new RightsBlock[count];
+ for(int j = 0; j < count; j++) Rights[j] = new RightsBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Rights[j].FromBytes(bytes, ref i); }
+ }
+
+ public GrantUserRightsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- Rights = new RightsBlock[count];
+ if(Rights.Length < count) {
+ Rights = new RightsBlock[count];
+ for(int j = 0; j < count; j++) Rights[j] = new RightsBlock();
+ }
for (int j = 0; j < count; j++)
- { Rights[j] = new RightsBlock(bytes, ref i); }
+ { Rights[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -46385,10 +55516,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -46426,10 +55562,15 @@ namespace libsecondlife.Packets
public RightsBlock() { }
public RightsBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentRelated = new LLUUID(bytes, i); i += 16;
+ AgentRelated.FromBytes(bytes, i); i += 16;
RelatedRights = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -46472,25 +55613,52 @@ namespace libsecondlife.Packets
Rights = new RightsBlock[0];
}
- public ChangeUserRightsPacket(byte[] bytes, ref int i)
+ public ChangeUserRightsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- Rights = new RightsBlock[count];
- for (int j = 0; j < count; j++)
- { Rights[j] = new RightsBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ChangeUserRightsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(Rights.Length < count) {
+ Rights = new RightsBlock[count];
+ for(int j = 0; j < count; j++) Rights[j] = new RightsBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Rights[j].FromBytes(bytes, ref i); }
+ }
+
+ public ChangeUserRightsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- Rights = new RightsBlock[count];
+ if(Rights.Length < count) {
+ Rights = new RightsBlock[count];
+ for(int j = 0; j < count; j++) Rights[j] = new RightsBlock();
+ }
for (int j = 0; j < count; j++)
- { Rights[j] = new RightsBlock(bytes, ref i); }
+ { Rights[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -46541,10 +55709,15 @@ namespace libsecondlife.Packets
public AgentBlockBlock() { }
public AgentBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -46579,23 +55752,50 @@ namespace libsecondlife.Packets
AgentBlock = new AgentBlockBlock[0];
}
- public OnlineNotificationPacket(byte[] bytes, ref int i)
+ public OnlineNotificationPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- int count = (int)bytes[i++];
- AgentBlock = new AgentBlockBlock[count];
- for (int j = 0; j < count; j++)
- { AgentBlock[j] = new AgentBlockBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public OnlineNotificationPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ int count = (int)bytes[i++];
+ if(AgentBlock.Length < count) {
+ AgentBlock = new AgentBlockBlock[count];
+ for(int j = 0; j < count; j++) AgentBlock[j] = new AgentBlockBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { AgentBlock[j].FromBytes(bytes, ref i); }
+ }
+
+ public OnlineNotificationPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
int count = (int)bytes[i++];
- AgentBlock = new AgentBlockBlock[count];
+ if(AgentBlock.Length < count) {
+ AgentBlock = new AgentBlockBlock[count];
+ for(int j = 0; j < count; j++) AgentBlock[j] = new AgentBlockBlock();
+ }
for (int j = 0; j < count; j++)
- { AgentBlock[j] = new AgentBlockBlock(bytes, ref i); }
+ { AgentBlock[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -46644,10 +55844,15 @@ namespace libsecondlife.Packets
public AgentBlockBlock() { }
public AgentBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -46682,23 +55887,50 @@ namespace libsecondlife.Packets
AgentBlock = new AgentBlockBlock[0];
}
- public OfflineNotificationPacket(byte[] bytes, ref int i)
+ public OfflineNotificationPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- int count = (int)bytes[i++];
- AgentBlock = new AgentBlockBlock[count];
- for (int j = 0; j < count; j++)
- { AgentBlock[j] = new AgentBlockBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public OfflineNotificationPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ int count = (int)bytes[i++];
+ if(AgentBlock.Length < count) {
+ AgentBlock = new AgentBlockBlock[count];
+ for(int j = 0; j < count; j++) AgentBlock[j] = new AgentBlockBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { AgentBlock[j].FromBytes(bytes, ref i); }
+ }
+
+ public OfflineNotificationPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
int count = (int)bytes[i++];
- AgentBlock = new AgentBlockBlock[count];
+ if(AgentBlock.Length < count) {
+ AgentBlock = new AgentBlockBlock[count];
+ for(int j = 0; j < count; j++) AgentBlock[j] = new AgentBlockBlock();
+ }
for (int j = 0; j < count; j++)
- { AgentBlock[j] = new AgentBlockBlock(bytes, ref i); }
+ { AgentBlock[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -46748,11 +55980,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -46806,6 +56043,11 @@ namespace libsecondlife.Packets
public StartLocationDataBlock() { }
public StartLocationDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -46814,8 +56056,8 @@ namespace libsecondlife.Packets
_simname = new byte[length];
Buffer.BlockCopy(bytes, i, _simname, 0, length); i += length;
LocationID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- LocationPos = new LLVector3(bytes, i); i += 12;
- LocationLookAt = new LLVector3(bytes, i); i += 12;
+ LocationPos.FromBytes(bytes, i); i += 12;
+ LocationLookAt.FromBytes(bytes, i); i += 12;
}
catch (Exception)
{
@@ -46864,19 +56106,40 @@ namespace libsecondlife.Packets
StartLocationData = new StartLocationDataBlock();
}
- public SetStartLocationRequestPacket(byte[] bytes, ref int i)
+ public SetStartLocationRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- StartLocationData = new StartLocationDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public SetStartLocationRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ StartLocationData.FromBytes(bytes, ref i);
+ }
+
+ public SetStartLocationRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- StartLocationData = new StartLocationDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ StartLocationData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -46937,11 +56200,16 @@ namespace libsecondlife.Packets
public AssetBlockBlock() { }
public AssetBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
Type = (sbyte)bytes[i++];
Tempfile = (bytes[i++] != 0) ? (bool)true : (bool)false;
StoreLocal = (bytes[i++] != 0) ? (bool)true : (bool)false;
@@ -46993,17 +56261,38 @@ namespace libsecondlife.Packets
AssetBlock = new AssetBlockBlock();
}
- public AssetUploadRequestPacket(byte[] bytes, ref int i)
+ public AssetUploadRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AssetBlock = new AssetBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AssetUploadRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AssetBlock.FromBytes(bytes, ref i);
+ }
+
+ public AssetUploadRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AssetBlock = new AssetBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AssetBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -47048,10 +56337,15 @@ namespace libsecondlife.Packets
public AssetBlockBlock() { }
public AssetBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- UUID = new LLUUID(bytes, i); i += 16;
+ UUID.FromBytes(bytes, i); i += 16;
Type = (sbyte)bytes[i++];
Success = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
@@ -47092,17 +56386,38 @@ namespace libsecondlife.Packets
AssetBlock = new AssetBlockBlock();
}
- public AssetUploadCompletePacket(byte[] bytes, ref int i)
+ public AssetUploadCompletePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AssetBlock = new AssetBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AssetUploadCompletePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AssetBlock.FromBytes(bytes, ref i);
+ }
+
+ public AssetUploadCompletePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AssetBlock = new AssetBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AssetBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -47146,11 +56461,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -47219,6 +56539,11 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -47230,7 +56555,7 @@ namespace libsecondlife.Packets
_charter = new byte[length];
Buffer.BlockCopy(bytes, i, _charter, 0, length); i += length;
ShowInList = (bytes[i++] != 0) ? (bool)true : (bool)false;
- InsigniaID = new LLUUID(bytes, i); i += 16;
+ InsigniaID.FromBytes(bytes, i); i += 16;
MembershipFee = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
OpenEnrollment = (bytes[i++] != 0) ? (bool)true : (bool)false;
AllowPublish = (bytes[i++] != 0) ? (bool)true : (bool)false;
@@ -47295,19 +56620,40 @@ namespace libsecondlife.Packets
GroupData = new GroupDataBlock();
}
- public CreateGroupRequestPacket(byte[] bytes, ref int i)
+ public CreateGroupRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public CreateGroupRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ }
+
+ public CreateGroupRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -47352,10 +56698,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -47406,11 +56757,16 @@ namespace libsecondlife.Packets
public ReplyDataBlock() { }
public ReplyDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
Success = (bytes[i++] != 0) ? (bool)true : (bool)false;
length = (ushort)bytes[i++];
_message = new byte[length];
@@ -47457,19 +56813,40 @@ namespace libsecondlife.Packets
ReplyData = new ReplyDataBlock();
}
- public CreateGroupReplyPacket(byte[] bytes, ref int i)
+ public CreateGroupReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ReplyData = new ReplyDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public CreateGroupReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ReplyData.FromBytes(bytes, ref i);
+ }
+
+ public CreateGroupReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ReplyData = new ReplyDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ReplyData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -47515,11 +56892,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -47577,16 +56959,21 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
length = (ushort)(bytes[i++] + (bytes[i++] << 8));
_charter = new byte[length];
Buffer.BlockCopy(bytes, i, _charter, 0, length); i += length;
ShowInList = (bytes[i++] != 0) ? (bool)true : (bool)false;
- InsigniaID = new LLUUID(bytes, i); i += 16;
+ InsigniaID.FromBytes(bytes, i); i += 16;
MembershipFee = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
OpenEnrollment = (bytes[i++] != 0) ? (bool)true : (bool)false;
AllowPublish = (bytes[i++] != 0) ? (bool)true : (bool)false;
@@ -47648,19 +57035,40 @@ namespace libsecondlife.Packets
GroupData = new GroupDataBlock();
}
- public UpdateGroupInfoPacket(byte[] bytes, ref int i)
+ public UpdateGroupInfoPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UpdateGroupInfoPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ }
+
+ public UpdateGroupInfoPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -47707,12 +57115,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -47755,11 +57168,16 @@ namespace libsecondlife.Packets
public RoleChangeBlock() { }
public RoleChangeBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- RoleID = new LLUUID(bytes, i); i += 16;
- MemberID = new LLUUID(bytes, i); i += 16;
+ RoleID.FromBytes(bytes, i); i += 16;
+ MemberID.FromBytes(bytes, i); i += 16;
Change = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -47804,25 +57222,52 @@ namespace libsecondlife.Packets
RoleChange = new RoleChangeBlock[0];
}
- public GroupRoleChangesPacket(byte[] bytes, ref int i)
+ public GroupRoleChangesPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- RoleChange = new RoleChangeBlock[count];
- for (int j = 0; j < count; j++)
- { RoleChange[j] = new RoleChangeBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupRoleChangesPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(RoleChange.Length < count) {
+ RoleChange = new RoleChangeBlock[count];
+ for(int j = 0; j < count; j++) RoleChange[j] = new RoleChangeBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { RoleChange[j].FromBytes(bytes, ref i); }
+ }
+
+ public GroupRoleChangesPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- RoleChange = new RoleChangeBlock[count];
+ if(RoleChange.Length < count) {
+ RoleChange = new RoleChangeBlock[count];
+ for(int j = 0; j < count; j++) RoleChange[j] = new RoleChangeBlock();
+ }
for (int j = 0; j < count; j++)
- { RoleChange[j] = new RoleChangeBlock(bytes, ref i); }
+ { RoleChange[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -47874,11 +57319,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -47917,10 +57367,15 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -47957,19 +57412,40 @@ namespace libsecondlife.Packets
GroupData = new GroupDataBlock();
}
- public JoinGroupRequestPacket(byte[] bytes, ref int i)
+ public JoinGroupRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public JoinGroupRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ }
+
+ public JoinGroupRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -48014,10 +57490,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -48055,10 +57536,15 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
Success = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -48098,19 +57584,40 @@ namespace libsecondlife.Packets
GroupData = new GroupDataBlock();
}
- public JoinGroupReplyPacket(byte[] bytes, ref int i)
+ public JoinGroupReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public JoinGroupReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ }
+
+ public JoinGroupReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -48156,11 +57663,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -48199,10 +57711,15 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -48239,10 +57756,15 @@ namespace libsecondlife.Packets
public EjectDataBlock() { }
public EjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- EjecteeID = new LLUUID(bytes, i); i += 16;
+ EjecteeID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -48281,27 +57803,54 @@ namespace libsecondlife.Packets
EjectData = new EjectDataBlock[0];
}
- public EjectGroupMemberRequestPacket(byte[] bytes, ref int i)
+ public EjectGroupMemberRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- EjectData = new EjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { EjectData[j] = new EjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public EjectGroupMemberRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(EjectData.Length < count) {
+ EjectData = new EjectDataBlock[count];
+ for(int j = 0; j < count; j++) EjectData[j] = new EjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { EjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public EjectGroupMemberRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- EjectData = new EjectDataBlock[count];
+ if(EjectData.Length < count) {
+ EjectData = new EjectDataBlock[count];
+ for(int j = 0; j < count; j++) EjectData[j] = new EjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { EjectData[j] = new EjectDataBlock(bytes, ref i); }
+ { EjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -48354,10 +57903,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -48394,10 +57948,15 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -48434,6 +57993,11 @@ namespace libsecondlife.Packets
public EjectDataBlock() { }
public EjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -48476,21 +58040,42 @@ namespace libsecondlife.Packets
EjectData = new EjectDataBlock();
}
- public EjectGroupMemberReplyPacket(byte[] bytes, ref int i)
+ public EjectGroupMemberReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
- EjectData = new EjectDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public EjectGroupMemberReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ EjectData.FromBytes(bytes, ref i);
+ }
+
+ public EjectGroupMemberReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
- EjectData = new EjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ EjectData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -48538,11 +58123,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -48581,10 +58171,15 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -48621,19 +58216,40 @@ namespace libsecondlife.Packets
GroupData = new GroupDataBlock();
}
- public LeaveGroupRequestPacket(byte[] bytes, ref int i)
+ public LeaveGroupRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public LeaveGroupRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ }
+
+ public LeaveGroupRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -48678,10 +58294,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -48719,10 +58340,15 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
Success = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -48762,19 +58388,40 @@ namespace libsecondlife.Packets
GroupData = new GroupDataBlock();
}
- public LeaveGroupReplyPacket(byte[] bytes, ref int i)
+ public LeaveGroupReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public LeaveGroupReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ }
+
+ public LeaveGroupReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -48820,11 +58467,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -48863,10 +58515,15 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -48904,11 +58561,16 @@ namespace libsecondlife.Packets
public InviteDataBlock() { }
public InviteDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- InviteeID = new LLUUID(bytes, i); i += 16;
- RoleID = new LLUUID(bytes, i); i += 16;
+ InviteeID.FromBytes(bytes, i); i += 16;
+ RoleID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -48949,27 +58611,54 @@ namespace libsecondlife.Packets
InviteData = new InviteDataBlock[0];
}
- public InviteGroupRequestPacket(byte[] bytes, ref int i)
+ public InviteGroupRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- InviteData = new InviteDataBlock[count];
- for (int j = 0; j < count; j++)
- { InviteData[j] = new InviteDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public InviteGroupRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(InviteData.Length < count) {
+ InviteData = new InviteDataBlock[count];
+ for(int j = 0; j < count; j++) InviteData[j] = new InviteDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { InviteData[j].FromBytes(bytes, ref i); }
+ }
+
+ public InviteGroupRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- InviteData = new InviteDataBlock[count];
+ if(InviteData.Length < count) {
+ InviteData = new InviteDataBlock[count];
+ for(int j = 0; j < count; j++) InviteData[j] = new InviteDataBlock();
+ }
for (int j = 0; j < count; j++)
- { InviteData[j] = new InviteDataBlock(bytes, ref i); }
+ { InviteData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -49023,11 +58712,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -49066,10 +58760,15 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -49106,19 +58805,40 @@ namespace libsecondlife.Packets
GroupData = new GroupDataBlock();
}
- public GroupProfileRequestPacket(byte[] bytes, ref int i)
+ public GroupProfileRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupProfileRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ }
+
+ public GroupProfileRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -49163,10 +58883,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -49252,11 +58977,16 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
@@ -49268,8 +58998,8 @@ namespace libsecondlife.Packets
_membertitle = new byte[length];
Buffer.BlockCopy(bytes, i, _membertitle, 0, length); i += length;
PowersMask = (ulong)((ulong)bytes[i++] + ((ulong)bytes[i++] << 8) + ((ulong)bytes[i++] << 16) + ((ulong)bytes[i++] << 24) + ((ulong)bytes[i++] << 32) + ((ulong)bytes[i++] << 40) + ((ulong)bytes[i++] << 48) + ((ulong)bytes[i++] << 56));
- InsigniaID = new LLUUID(bytes, i); i += 16;
- FounderID = new LLUUID(bytes, i); i += 16;
+ InsigniaID.FromBytes(bytes, i); i += 16;
+ FounderID.FromBytes(bytes, i); i += 16;
MembershipFee = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
OpenEnrollment = (bytes[i++] != 0) ? (bool)true : (bool)false;
Money = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -49277,7 +59007,7 @@ namespace libsecondlife.Packets
GroupRolesCount = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
AllowPublish = (bytes[i++] != 0) ? (bool)true : (bool)false;
MaturePublish = (bytes[i++] != 0) ? (bool)true : (bool)false;
- OwnerRole = new LLUUID(bytes, i); i += 16;
+ OwnerRole.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -49373,19 +59103,40 @@ namespace libsecondlife.Packets
GroupData = new GroupDataBlock();
}
- public GroupProfileReplyPacket(byte[] bytes, ref int i)
+ public GroupProfileReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupProfileReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ }
+
+ public GroupProfileReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -49432,12 +59183,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -49480,10 +59236,15 @@ namespace libsecondlife.Packets
public MoneyDataBlock() { }
public MoneyDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- RequestID = new LLUUID(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
IntervalDays = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
CurrentInterval = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
@@ -49532,19 +59293,40 @@ namespace libsecondlife.Packets
MoneyData = new MoneyDataBlock();
}
- public GroupAccountSummaryRequestPacket(byte[] bytes, ref int i)
+ public GroupAccountSummaryRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupAccountSummaryRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
+ }
+
+ public GroupAccountSummaryRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -49590,11 +59372,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -49686,11 +59473,16 @@ namespace libsecondlife.Packets
public MoneyDataBlock() { }
public MoneyDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- RequestID = new LLUUID(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
IntervalDays = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
CurrentInterval = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
length = (ushort)bytes[i++];
@@ -49846,19 +59638,40 @@ namespace libsecondlife.Packets
MoneyData = new MoneyDataBlock();
}
- public GroupAccountSummaryReplyPacket(byte[] bytes, ref int i)
+ public GroupAccountSummaryReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupAccountSummaryReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
+ }
+
+ public GroupAccountSummaryReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -49905,12 +59718,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -49953,10 +59771,15 @@ namespace libsecondlife.Packets
public MoneyDataBlock() { }
public MoneyDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- RequestID = new LLUUID(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
IntervalDays = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
CurrentInterval = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
@@ -50005,19 +59828,40 @@ namespace libsecondlife.Packets
MoneyData = new MoneyDataBlock();
}
- public GroupAccountDetailsRequestPacket(byte[] bytes, ref int i)
+ public GroupAccountDetailsRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupAccountDetailsRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
+ }
+
+ public GroupAccountDetailsRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -50063,11 +59907,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -50121,11 +59970,16 @@ namespace libsecondlife.Packets
public MoneyDataBlock() { }
public MoneyDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- RequestID = new LLUUID(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
IntervalDays = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
CurrentInterval = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
length = (ushort)bytes[i++];
@@ -50194,6 +60048,11 @@ namespace libsecondlife.Packets
public HistoryDataBlock() { }
public HistoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -50248,27 +60107,54 @@ namespace libsecondlife.Packets
HistoryData = new HistoryDataBlock[0];
}
- public GroupAccountDetailsReplyPacket(byte[] bytes, ref int i)
+ public GroupAccountDetailsReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- HistoryData = new HistoryDataBlock[count];
- for (int j = 0; j < count; j++)
- { HistoryData[j] = new HistoryDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupAccountDetailsReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(HistoryData.Length < count) {
+ HistoryData = new HistoryDataBlock[count];
+ for(int j = 0; j < count; j++) HistoryData[j] = new HistoryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { HistoryData[j].FromBytes(bytes, ref i); }
+ }
+
+ public GroupAccountDetailsReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- HistoryData = new HistoryDataBlock[count];
+ if(HistoryData.Length < count) {
+ HistoryData = new HistoryDataBlock[count];
+ for(int j = 0; j < count; j++) HistoryData[j] = new HistoryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { HistoryData[j] = new HistoryDataBlock(bytes, ref i); }
+ { HistoryData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -50323,12 +60209,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -50371,10 +60262,15 @@ namespace libsecondlife.Packets
public MoneyDataBlock() { }
public MoneyDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- RequestID = new LLUUID(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
IntervalDays = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
CurrentInterval = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
@@ -50423,19 +60319,40 @@ namespace libsecondlife.Packets
MoneyData = new MoneyDataBlock();
}
- public GroupAccountTransactionsRequestPacket(byte[] bytes, ref int i)
+ public GroupAccountTransactionsRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupAccountTransactionsRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
+ }
+
+ public GroupAccountTransactionsRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -50481,11 +60398,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -50539,11 +60461,16 @@ namespace libsecondlife.Packets
public MoneyDataBlock() { }
public MoneyDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- RequestID = new LLUUID(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
IntervalDays = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
CurrentInterval = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
length = (ushort)bytes[i++];
@@ -50637,6 +60564,11 @@ namespace libsecondlife.Packets
public HistoryDataBlock() { }
public HistoryDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -50713,27 +60645,54 @@ namespace libsecondlife.Packets
HistoryData = new HistoryDataBlock[0];
}
- public GroupAccountTransactionsReplyPacket(byte[] bytes, ref int i)
+ public GroupAccountTransactionsReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- HistoryData = new HistoryDataBlock[count];
- for (int j = 0; j < count; j++)
- { HistoryData[j] = new HistoryDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupAccountTransactionsReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(HistoryData.Length < count) {
+ HistoryData = new HistoryDataBlock[count];
+ for(int j = 0; j < count; j++) HistoryData[j] = new HistoryDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { HistoryData[j].FromBytes(bytes, ref i); }
+ }
+
+ public GroupAccountTransactionsReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- MoneyData = new MoneyDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ MoneyData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- HistoryData = new HistoryDataBlock[count];
+ if(HistoryData.Length < count) {
+ HistoryData = new HistoryDataBlock[count];
+ for(int j = 0; j < count; j++) HistoryData[j] = new HistoryDataBlock();
+ }
for (int j = 0; j < count; j++)
- { HistoryData[j] = new HistoryDataBlock(bytes, ref i); }
+ { HistoryData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -50787,11 +60746,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -50830,10 +60794,15 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -50870,10 +60839,15 @@ namespace libsecondlife.Packets
public TransactionDataBlock() { }
public TransactionDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -50912,21 +60886,42 @@ namespace libsecondlife.Packets
TransactionData = new TransactionDataBlock();
}
- public GroupActiveProposalsRequestPacket(byte[] bytes, ref int i)
+ public GroupActiveProposalsRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
- TransactionData = new TransactionDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupActiveProposalsRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ TransactionData.FromBytes(bytes, ref i);
+ }
+
+ public GroupActiveProposalsRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
- TransactionData = new TransactionDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ TransactionData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -50974,11 +60969,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -51018,10 +61018,15 @@ namespace libsecondlife.Packets
public TransactionDataBlock() { }
public TransactionDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
TotalNumItems = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -51129,12 +61134,17 @@ namespace libsecondlife.Packets
public ProposalDataBlock() { }
public ProposalDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- VoteID = new LLUUID(bytes, i); i += 16;
- VoteInitiator = new LLUUID(bytes, i); i += 16;
+ VoteID.FromBytes(bytes, i); i += 16;
+ VoteInitiator.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_tersedateid = new byte[length];
Buffer.BlockCopy(bytes, i, _tersedateid, 0, length); i += length;
@@ -51230,27 +61240,54 @@ namespace libsecondlife.Packets
ProposalData = new ProposalDataBlock[0];
}
- public GroupActiveProposalItemReplyPacket(byte[] bytes, ref int i)
+ public GroupActiveProposalItemReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionData = new TransactionDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ProposalData = new ProposalDataBlock[count];
- for (int j = 0; j < count; j++)
- { ProposalData[j] = new ProposalDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupActiveProposalItemReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ProposalData.Length < count) {
+ ProposalData = new ProposalDataBlock[count];
+ for(int j = 0; j < count; j++) ProposalData[j] = new ProposalDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ProposalData[j].FromBytes(bytes, ref i); }
+ }
+
+ public GroupActiveProposalItemReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionData = new TransactionDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ProposalData = new ProposalDataBlock[count];
+ if(ProposalData.Length < count) {
+ ProposalData = new ProposalDataBlock[count];
+ for(int j = 0; j < count; j++) ProposalData[j] = new ProposalDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ProposalData[j] = new ProposalDataBlock(bytes, ref i); }
+ { ProposalData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -51304,11 +61341,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -51347,10 +61389,15 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -51387,10 +61434,15 @@ namespace libsecondlife.Packets
public TransactionDataBlock() { }
public TransactionDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -51429,21 +61481,42 @@ namespace libsecondlife.Packets
TransactionData = new TransactionDataBlock();
}
- public GroupVoteHistoryRequestPacket(byte[] bytes, ref int i)
+ public GroupVoteHistoryRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
- TransactionData = new TransactionDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupVoteHistoryRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ TransactionData.FromBytes(bytes, ref i);
+ }
+
+ public GroupVoteHistoryRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
- TransactionData = new TransactionDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ TransactionData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -51491,11 +61564,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -51535,10 +61613,15 @@ namespace libsecondlife.Packets
public TransactionDataBlock() { }
public TransactionDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TransactionID = new LLUUID(bytes, i); i += 16;
+ TransactionID.FromBytes(bytes, i); i += 16;
TotalNumItems = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -51657,11 +61740,16 @@ namespace libsecondlife.Packets
public HistoryItemDataBlock() { }
public HistoryItemDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- VoteID = new LLUUID(bytes, i); i += 16;
+ VoteID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_tersedateid = new byte[length];
Buffer.BlockCopy(bytes, i, _tersedateid, 0, length); i += length;
@@ -51671,7 +61759,7 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_enddatetime = new byte[length];
Buffer.BlockCopy(bytes, i, _enddatetime, 0, length); i += length;
- VoteInitiator = new LLUUID(bytes, i); i += 16;
+ VoteInitiator.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_votetype = new byte[length];
Buffer.BlockCopy(bytes, i, _votetype, 0, length); i += length;
@@ -51776,11 +61864,16 @@ namespace libsecondlife.Packets
public VoteItemBlock() { }
public VoteItemBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- CandidateID = new LLUUID(bytes, i); i += 16;
+ CandidateID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_votecast = new byte[length];
Buffer.BlockCopy(bytes, i, _votecast, 0, length); i += length;
@@ -51835,29 +61928,56 @@ namespace libsecondlife.Packets
VoteItem = new VoteItemBlock[0];
}
- public GroupVoteHistoryItemReplyPacket(byte[] bytes, ref int i)
+ public GroupVoteHistoryItemReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionData = new TransactionDataBlock(bytes, ref i);
- HistoryItemData = new HistoryItemDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- VoteItem = new VoteItemBlock[count];
- for (int j = 0; j < count; j++)
- { VoteItem[j] = new VoteItemBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupVoteHistoryItemReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionData.FromBytes(bytes, ref i);
+ HistoryItemData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(VoteItem.Length < count) {
+ VoteItem = new VoteItemBlock[count];
+ for(int j = 0; j < count; j++) VoteItem[j] = new VoteItemBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { VoteItem[j].FromBytes(bytes, ref i); }
+ }
+
+ public GroupVoteHistoryItemReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- TransactionData = new TransactionDataBlock(bytes, ref i);
- HistoryItemData = new HistoryItemDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TransactionData.FromBytes(bytes, ref i);
+ HistoryItemData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- VoteItem = new VoteItemBlock[count];
+ if(VoteItem.Length < count) {
+ VoteItem = new VoteItemBlock[count];
+ for(int j = 0; j < count; j++) VoteItem[j] = new VoteItemBlock();
+ }
for (int j = 0; j < count; j++)
- { VoteItem[j] = new VoteItemBlock(bytes, ref i); }
+ { VoteItem[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -51913,11 +62033,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -51972,11 +62097,16 @@ namespace libsecondlife.Packets
public ProposalDataBlock() { }
public ProposalDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
Quorum = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
Majority = BitConverter.ToSingle(bytes, i); i += 4;
@@ -52039,19 +62169,40 @@ namespace libsecondlife.Packets
ProposalData = new ProposalDataBlock();
}
- public StartGroupProposalPacket(byte[] bytes, ref int i)
+ public StartGroupProposalPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ProposalData = new ProposalDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public StartGroupProposalPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ProposalData.FromBytes(bytes, ref i);
+ }
+
+ public StartGroupProposalPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ProposalData = new ProposalDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ProposalData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -52097,11 +62248,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -52154,12 +62310,17 @@ namespace libsecondlife.Packets
public ProposalDataBlock() { }
public ProposalDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ProposalID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ ProposalID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_votecast = new byte[length];
Buffer.BlockCopy(bytes, i, _votecast, 0, length); i += length;
@@ -52205,19 +62366,40 @@ namespace libsecondlife.Packets
ProposalData = new ProposalDataBlock();
}
- public GroupProposalBallotPacket(byte[] bytes, ref int i)
+ public GroupProposalBallotPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ProposalData = new ProposalDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupProposalBallotPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ProposalData.FromBytes(bytes, ref i);
+ }
+
+ public GroupProposalBallotPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ProposalData = new ProposalDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ProposalData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -52263,11 +62445,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -52307,11 +62494,16 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
- RequestID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -52350,19 +62542,40 @@ namespace libsecondlife.Packets
GroupData = new GroupDataBlock();
}
- public GroupMembersRequestPacket(byte[] bytes, ref int i)
+ public GroupMembersRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupMembersRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ }
+
+ public GroupMembersRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -52407,10 +62620,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -52449,11 +62667,16 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
- RequestID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
MemberCount = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -52526,11 +62749,16 @@ namespace libsecondlife.Packets
public MemberDataBlock() { }
public MemberDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
Contribution = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
length = (ushort)bytes[i++];
_onlinestatus = new byte[length];
@@ -52604,27 +62832,54 @@ namespace libsecondlife.Packets
MemberData = new MemberDataBlock[0];
}
- public GroupMembersReplyPacket(byte[] bytes, ref int i)
+ public GroupMembersReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- MemberData = new MemberDataBlock[count];
- for (int j = 0; j < count; j++)
- { MemberData[j] = new MemberDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupMembersReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(MemberData.Length < count) {
+ MemberData = new MemberDataBlock[count];
+ for(int j = 0; j < count; j++) MemberData[j] = new MemberDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { MemberData[j].FromBytes(bytes, ref i); }
+ }
+
+ public GroupMembersReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- MemberData = new MemberDataBlock[count];
+ if(MemberData.Length < count) {
+ MemberData = new MemberDataBlock[count];
+ for(int j = 0; j < count; j++) MemberData[j] = new MemberDataBlock();
+ }
for (int j = 0; j < count; j++)
- { MemberData[j] = new MemberDataBlock(bytes, ref i); }
+ { MemberData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -52679,12 +62934,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -52723,17 +62983,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public ActivateGroupPacket(byte[] bytes, ref int i)
+ public ActivateGroupPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ActivateGroupPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public ActivateGroupPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -52777,11 +63058,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -52821,10 +63107,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
Contribution = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -52867,19 +63158,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public SetGroupContributionPacket(byte[] bytes, ref int i)
+ public SetGroupContributionPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public SetGroupContributionPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public SetGroupContributionPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -52925,11 +63237,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -52969,10 +63286,15 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
AcceptNotices = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -53012,19 +63334,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public SetGroupAcceptNoticesPacket(byte[] bytes, ref int i)
+ public SetGroupAcceptNoticesPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public SetGroupAcceptNoticesPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public SetGroupAcceptNoticesPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -53070,11 +63413,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -53114,11 +63462,16 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
- RequestID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -53157,19 +63510,40 @@ namespace libsecondlife.Packets
GroupData = new GroupDataBlock();
}
- public GroupRoleDataRequestPacket(byte[] bytes, ref int i)
+ public GroupRoleDataRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupRoleDataRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ }
+
+ public GroupRoleDataRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -53214,10 +63588,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -53256,11 +63635,16 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
- RequestID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
RoleCount = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -53344,11 +63728,16 @@ namespace libsecondlife.Packets
public RoleDataBlock() { }
public RoleDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- RoleID = new LLUUID(bytes, i); i += 16;
+ RoleID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
@@ -53427,27 +63816,54 @@ namespace libsecondlife.Packets
RoleData = new RoleDataBlock[0];
}
- public GroupRoleDataReplyPacket(byte[] bytes, ref int i)
+ public GroupRoleDataReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- RoleData = new RoleDataBlock[count];
- for (int j = 0; j < count; j++)
- { RoleData[j] = new RoleDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupRoleDataReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(RoleData.Length < count) {
+ RoleData = new RoleDataBlock[count];
+ for(int j = 0; j < count; j++) RoleData[j] = new RoleDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { RoleData[j].FromBytes(bytes, ref i); }
+ }
+
+ public GroupRoleDataReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- RoleData = new RoleDataBlock[count];
+ if(RoleData.Length < count) {
+ RoleData = new RoleDataBlock[count];
+ for(int j = 0; j < count; j++) RoleData[j] = new RoleDataBlock();
+ }
for (int j = 0; j < count; j++)
- { RoleData[j] = new RoleDataBlock(bytes, ref i); }
+ { RoleData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -53501,11 +63917,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -53545,11 +63966,16 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
- RequestID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -53588,19 +64014,40 @@ namespace libsecondlife.Packets
GroupData = new GroupDataBlock();
}
- public GroupRoleMembersRequestPacket(byte[] bytes, ref int i)
+ public GroupRoleMembersRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupRoleMembersRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
+ }
+
+ public GroupRoleMembersRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- GroupData = new GroupDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ GroupData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -53648,12 +64095,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
- RequestID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
TotalPairs = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -53701,11 +64153,16 @@ namespace libsecondlife.Packets
public MemberDataBlock() { }
public MemberDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- RoleID = new LLUUID(bytes, i); i += 16;
- MemberID = new LLUUID(bytes, i); i += 16;
+ RoleID.FromBytes(bytes, i); i += 16;
+ MemberID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -53744,25 +64201,52 @@ namespace libsecondlife.Packets
MemberData = new MemberDataBlock[0];
}
- public GroupRoleMembersReplyPacket(byte[] bytes, ref int i)
+ public GroupRoleMembersReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- MemberData = new MemberDataBlock[count];
- for (int j = 0; j < count; j++)
- { MemberData[j] = new MemberDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupRoleMembersReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(MemberData.Length < count) {
+ MemberData = new MemberDataBlock[count];
+ for(int j = 0; j < count; j++) MemberData[j] = new MemberDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { MemberData[j].FromBytes(bytes, ref i); }
+ }
+
+ public GroupRoleMembersReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- MemberData = new MemberDataBlock[count];
+ if(MemberData.Length < count) {
+ MemberData = new MemberDataBlock[count];
+ for(int j = 0; j < count; j++) MemberData[j] = new MemberDataBlock();
+ }
for (int j = 0; j < count; j++)
- { MemberData[j] = new MemberDataBlock(bytes, ref i); }
+ { MemberData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -53816,13 +64300,18 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
- RequestID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -53863,17 +64352,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public GroupTitlesRequestPacket(byte[] bytes, ref int i)
+ public GroupTitlesRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupTitlesRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public GroupTitlesRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -53918,12 +64428,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
- RequestID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -53978,6 +64493,11 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -53985,7 +64505,7 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_title = new byte[length];
Buffer.BlockCopy(bytes, i, _title, 0, length); i += length;
- RoleID = new LLUUID(bytes, i); i += 16;
+ RoleID.FromBytes(bytes, i); i += 16;
Selected = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -54030,25 +64550,52 @@ namespace libsecondlife.Packets
GroupData = new GroupDataBlock[0];
}
- public GroupTitlesReplyPacket(byte[] bytes, ref int i)
+ public GroupTitlesReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- GroupData = new GroupDataBlock[count];
- for (int j = 0; j < count; j++)
- { GroupData[j] = new GroupDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupTitlesReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(GroupData.Length < count) {
+ GroupData = new GroupDataBlock[count];
+ for(int j = 0; j < count; j++) GroupData[j] = new GroupDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { GroupData[j].FromBytes(bytes, ref i); }
+ }
+
+ public GroupTitlesReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- GroupData = new GroupDataBlock[count];
+ if(GroupData.Length < count) {
+ GroupData = new GroupDataBlock[count];
+ for(int j = 0; j < count; j++) GroupData[j] = new GroupDataBlock();
+ }
for (int j = 0; j < count; j++)
- { GroupData[j] = new GroupDataBlock(bytes, ref i); }
+ { GroupData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -54102,13 +64649,18 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
- TitleRoleID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
+ TitleRoleID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -54149,17 +64701,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public GroupTitleUpdatePacket(byte[] bytes, ref int i)
+ public GroupTitleUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupTitleUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public GroupTitleUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -54204,12 +64777,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -54289,11 +64867,16 @@ namespace libsecondlife.Packets
public RoleDataBlock() { }
public RoleDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- RoleID = new LLUUID(bytes, i); i += 16;
+ RoleID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
@@ -54367,25 +64950,52 @@ namespace libsecondlife.Packets
RoleData = new RoleDataBlock[0];
}
- public GroupRoleUpdatePacket(byte[] bytes, ref int i)
+ public GroupRoleUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- RoleData = new RoleDataBlock[count];
- for (int j = 0; j < count; j++)
- { RoleData[j] = new RoleDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupRoleUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(RoleData.Length < count) {
+ RoleData = new RoleDataBlock[count];
+ for(int j = 0; j < count; j++) RoleData[j] = new RoleDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { RoleData[j].FromBytes(bytes, ref i); }
+ }
+
+ public GroupRoleUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- RoleData = new RoleDataBlock[count];
+ if(RoleData.Length < count) {
+ RoleData = new RoleDataBlock[count];
+ for(int j = 0; j < count; j++) RoleData[j] = new RoleDataBlock();
+ }
for (int j = 0; j < count; j++)
- { RoleData[j] = new RoleDataBlock(bytes, ref i); }
+ { RoleData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -54437,11 +65047,16 @@ namespace libsecondlife.Packets
public RequestDataBlock() { }
public RequestDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- RequestID = new LLUUID(bytes, i); i += 16;
- AgentID = new LLUUID(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -54478,17 +65093,38 @@ namespace libsecondlife.Packets
RequestData = new RequestDataBlock();
}
- public LiveHelpGroupRequestPacket(byte[] bytes, ref int i)
+ public LiveHelpGroupRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- RequestData = new RequestDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public LiveHelpGroupRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RequestData.FromBytes(bytes, ref i);
+ }
+
+ public LiveHelpGroupRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- RequestData = new RequestDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RequestData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -54545,12 +65181,17 @@ namespace libsecondlife.Packets
public ReplyDataBlock() { }
public ReplyDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- RequestID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ RequestID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_selection = new byte[length];
Buffer.BlockCopy(bytes, i, _selection, 0, length); i += length;
@@ -54594,17 +65235,38 @@ namespace libsecondlife.Packets
ReplyData = new ReplyDataBlock();
}
- public LiveHelpGroupReplyPacket(byte[] bytes, ref int i)
+ public LiveHelpGroupReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- ReplyData = new ReplyDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public LiveHelpGroupReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ReplyData.FromBytes(bytes, ref i);
+ }
+
+ public LiveHelpGroupReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- ReplyData = new ReplyDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ReplyData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -54648,11 +65310,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -54689,17 +65356,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public AgentWearablesRequestPacket(byte[] bytes, ref int i)
+ public AgentWearablesRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentWearablesRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public AgentWearablesRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -54744,11 +65432,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
SerialNum = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -54795,11 +65488,16 @@ namespace libsecondlife.Packets
public WearableDataBlock() { }
public WearableDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
- AssetID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ AssetID.FromBytes(bytes, i); i += 16;
WearableType = (byte)bytes[i++];
}
catch (Exception)
@@ -54841,25 +65539,52 @@ namespace libsecondlife.Packets
WearableData = new WearableDataBlock[0];
}
- public AgentWearablesUpdatePacket(byte[] bytes, ref int i)
+ public AgentWearablesUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- WearableData = new WearableDataBlock[count];
- for (int j = 0; j < count; j++)
- { WearableData[j] = new WearableDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentWearablesUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(WearableData.Length < count) {
+ WearableData = new WearableDataBlock[count];
+ for(int j = 0; j < count; j++) WearableData[j] = new WearableDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { WearableData[j].FromBytes(bytes, ref i); }
+ }
+
+ public AgentWearablesUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- WearableData = new WearableDataBlock[count];
+ if(WearableData.Length < count) {
+ WearableData = new WearableDataBlock[count];
+ for(int j = 0; j < count; j++) WearableData[j] = new WearableDataBlock();
+ }
for (int j = 0; j < count; j++)
- { WearableData[j] = new WearableDataBlock(bytes, ref i); }
+ { WearableData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -54911,11 +65636,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -54955,10 +65685,15 @@ namespace libsecondlife.Packets
public WearableDataBlock() { }
public WearableDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
WearableType = (byte)bytes[i++];
}
catch (Exception)
@@ -54998,25 +65733,52 @@ namespace libsecondlife.Packets
WearableData = new WearableDataBlock[0];
}
- public AgentIsNowWearingPacket(byte[] bytes, ref int i)
+ public AgentIsNowWearingPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- WearableData = new WearableDataBlock[count];
- for (int j = 0; j < count; j++)
- { WearableData[j] = new WearableDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentIsNowWearingPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(WearableData.Length < count) {
+ WearableData = new WearableDataBlock[count];
+ for(int j = 0; j < count; j++) WearableData[j] = new WearableDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { WearableData[j].FromBytes(bytes, ref i); }
+ }
+
+ public AgentIsNowWearingPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- WearableData = new WearableDataBlock[count];
+ if(WearableData.Length < count) {
+ WearableData = new WearableDataBlock[count];
+ for(int j = 0; j < count; j++) WearableData[j] = new WearableDataBlock();
+ }
for (int j = 0; j < count; j++)
- { WearableData[j] = new WearableDataBlock(bytes, ref i); }
+ { WearableData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -55069,11 +65831,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
SerialNum = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -55119,10 +65886,15 @@ namespace libsecondlife.Packets
public WearableDataBlock() { }
public WearableDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
TextureIndex = (byte)bytes[i++];
}
catch (Exception)
@@ -55162,25 +65934,52 @@ namespace libsecondlife.Packets
WearableData = new WearableDataBlock[0];
}
- public AgentCachedTexturePacket(byte[] bytes, ref int i)
+ public AgentCachedTexturePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- WearableData = new WearableDataBlock[count];
- for (int j = 0; j < count; j++)
- { WearableData[j] = new WearableDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentCachedTexturePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(WearableData.Length < count) {
+ WearableData = new WearableDataBlock[count];
+ for(int j = 0; j < count; j++) WearableData[j] = new WearableDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { WearableData[j].FromBytes(bytes, ref i); }
+ }
+
+ public AgentCachedTexturePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- WearableData = new WearableDataBlock[count];
+ if(WearableData.Length < count) {
+ WearableData = new WearableDataBlock[count];
+ for(int j = 0; j < count; j++) WearableData[j] = new WearableDataBlock();
+ }
for (int j = 0; j < count; j++)
- { WearableData[j] = new WearableDataBlock(bytes, ref i); }
+ { WearableData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -55233,11 +66032,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
SerialNum = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -55296,11 +66100,16 @@ namespace libsecondlife.Packets
public WearableDataBlock() { }
public WearableDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- TextureID = new LLUUID(bytes, i); i += 16;
+ TextureID.FromBytes(bytes, i); i += 16;
TextureIndex = (byte)bytes[i++];
length = (ushort)bytes[i++];
_hostname = new byte[length];
@@ -55347,25 +66156,52 @@ namespace libsecondlife.Packets
WearableData = new WearableDataBlock[0];
}
- public AgentCachedTextureResponsePacket(byte[] bytes, ref int i)
+ public AgentCachedTextureResponsePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- WearableData = new WearableDataBlock[count];
- for (int j = 0; j < count; j++)
- { WearableData[j] = new WearableDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentCachedTextureResponsePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(WearableData.Length < count) {
+ WearableData = new WearableDataBlock[count];
+ for(int j = 0; j < count; j++) WearableData[j] = new WearableDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { WearableData[j].FromBytes(bytes, ref i); }
+ }
+
+ public AgentCachedTextureResponsePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- WearableData = new WearableDataBlock[count];
+ if(WearableData.Length < count) {
+ WearableData = new WearableDataBlock[count];
+ for(int j = 0; j < count; j++) WearableData[j] = new WearableDataBlock();
+ }
for (int j = 0; j < count; j++)
- { WearableData[j] = new WearableDataBlock(bytes, ref i); }
+ { WearableData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -55417,11 +66253,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -55458,17 +66299,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public AgentDataUpdateRequestPacket(byte[] bytes, ref int i)
+ public AgentDataUpdateRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentDataUpdateRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public AgentDataUpdateRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -55562,11 +66424,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_firstname = new byte[length];
Buffer.BlockCopy(bytes, i, _firstname, 0, length); i += length;
@@ -55576,7 +66443,7 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_grouptitle = new byte[length];
Buffer.BlockCopy(bytes, i, _grouptitle, 0, length); i += length;
- ActiveGroupID = new LLUUID(bytes, i); i += 16;
+ ActiveGroupID.FromBytes(bytes, i); i += 16;
GroupPowers = (ulong)((ulong)bytes[i++] + ((ulong)bytes[i++] << 8) + ((ulong)bytes[i++] << 16) + ((ulong)bytes[i++] << 24) + ((ulong)bytes[i++] << 32) + ((ulong)bytes[i++] << 40) + ((ulong)bytes[i++] << 48) + ((ulong)bytes[i++] << 56));
length = (ushort)bytes[i++];
_groupname = new byte[length];
@@ -55645,17 +66512,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public AgentDataUpdatePacket(byte[] bytes, ref int i)
+ public AgentDataUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentDataUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public AgentDataUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -55713,12 +66601,17 @@ namespace libsecondlife.Packets
public AgentGroupDataBlock() { }
public AgentGroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
AgentPowers = (ulong)((ulong)bytes[i++] + ((ulong)bytes[i++] << 8) + ((ulong)bytes[i++] << 16) + ((ulong)bytes[i++] << 24) + ((ulong)bytes[i++] << 32) + ((ulong)bytes[i++] << 40) + ((ulong)bytes[i++] << 48) + ((ulong)bytes[i++] << 56));
length = (ushort)bytes[i++];
_grouptitle = new byte[length];
@@ -55772,23 +66665,50 @@ namespace libsecondlife.Packets
AgentGroupData = new AgentGroupDataBlock[0];
}
- public GroupDataUpdatePacket(byte[] bytes, ref int i)
+ public GroupDataUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- int count = (int)bytes[i++];
- AgentGroupData = new AgentGroupDataBlock[count];
- for (int j = 0; j < count; j++)
- { AgentGroupData[j] = new AgentGroupDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public GroupDataUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ int count = (int)bytes[i++];
+ if(AgentGroupData.Length < count) {
+ AgentGroupData = new AgentGroupDataBlock[count];
+ for(int j = 0; j < count; j++) AgentGroupData[j] = new AgentGroupDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { AgentGroupData[j].FromBytes(bytes, ref i); }
+ }
+
+ public GroupDataUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
int count = (int)bytes[i++];
- AgentGroupData = new AgentGroupDataBlock[count];
+ if(AgentGroupData.Length < count) {
+ AgentGroupData = new AgentGroupDataBlock[count];
+ for(int j = 0; j < count; j++) AgentGroupData[j] = new AgentGroupDataBlock();
+ }
for (int j = 0; j < count; j++)
- { AgentGroupData[j] = new AgentGroupDataBlock(bytes, ref i); }
+ { AgentGroupData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -55837,10 +66757,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -55894,14 +66819,19 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
GroupPowers = (ulong)((ulong)bytes[i++] + ((ulong)bytes[i++] << 8) + ((ulong)bytes[i++] << 16) + ((ulong)bytes[i++] << 24) + ((ulong)bytes[i++] << 32) + ((ulong)bytes[i++] << 40) + ((ulong)bytes[i++] << 48) + ((ulong)bytes[i++] << 56));
AcceptNotices = (bytes[i++] != 0) ? (bool)true : (bool)false;
- GroupInsigniaID = new LLUUID(bytes, i); i += 16;
+ GroupInsigniaID.FromBytes(bytes, i); i += 16;
Contribution = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
length = (ushort)bytes[i++];
_groupname = new byte[length];
@@ -55964,25 +66894,52 @@ namespace libsecondlife.Packets
GroupData = new GroupDataBlock[0];
}
- public AgentGroupDataUpdatePacket(byte[] bytes, ref int i)
+ public AgentGroupDataUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- GroupData = new GroupDataBlock[count];
- for (int j = 0; j < count; j++)
- { GroupData[j] = new GroupDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentGroupDataUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(GroupData.Length < count) {
+ GroupData = new GroupDataBlock[count];
+ for(int j = 0; j < count; j++) GroupData[j] = new GroupDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { GroupData[j].FromBytes(bytes, ref i); }
+ }
+
+ public AgentGroupDataUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- GroupData = new GroupDataBlock[count];
+ if(GroupData.Length < count) {
+ GroupData = new GroupDataBlock[count];
+ for(int j = 0; j < count; j++) GroupData[j] = new GroupDataBlock();
+ }
for (int j = 0; j < count; j++)
- { GroupData[j] = new GroupDataBlock(bytes, ref i); }
+ { GroupData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -56034,11 +66991,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -56075,17 +67037,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public AgentDropGroupPacket(byte[] bytes, ref int i)
+ public AgentDropGroupPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentDropGroupPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public AgentDropGroupPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -56129,10 +67112,15 @@ namespace libsecondlife.Packets
public DataBlockBlock() { }
public DataBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- EndPointID = new LLUUID(bytes, i); i += 16;
+ EndPointID.FromBytes(bytes, i); i += 16;
Digest = new byte[32];
Buffer.BlockCopy(bytes, i, Digest, 0, 32); i += 32;
}
@@ -56171,17 +67159,38 @@ namespace libsecondlife.Packets
DataBlock = new DataBlockBlock();
}
- public CreateTrustedCircuitPacket(byte[] bytes, ref int i)
+ public CreateTrustedCircuitPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- DataBlock = new DataBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public CreateTrustedCircuitPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ DataBlock.FromBytes(bytes, ref i);
+ }
+
+ public CreateTrustedCircuitPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- DataBlock = new DataBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ DataBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -56224,10 +67233,15 @@ namespace libsecondlife.Packets
public DataBlockBlock() { }
public DataBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- EndPointID = new LLUUID(bytes, i); i += 16;
+ EndPointID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -56262,17 +67276,38 @@ namespace libsecondlife.Packets
DataBlock = new DataBlockBlock();
}
- public DenyTrustedCircuitPacket(byte[] bytes, ref int i)
+ public DenyTrustedCircuitPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- DataBlock = new DataBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DenyTrustedCircuitPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ DataBlock.FromBytes(bytes, ref i);
+ }
+
+ public DenyTrustedCircuitPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- DataBlock = new DataBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ DataBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -56311,15 +67346,36 @@ namespace libsecondlife.Packets
Header.Reliable = true;
}
- public RequestTrustedCircuitPacket(byte[] bytes, ref int i)
+ public RequestTrustedCircuitPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RequestTrustedCircuitPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ }
+
+ public RequestTrustedCircuitPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
}
public override byte[] ToBytes()
@@ -56361,11 +67417,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -56435,12 +67496,17 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
AttachmentPt = (byte)bytes[i++];
ItemFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -56521,19 +67587,40 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock();
}
- public RezSingleAttachmentFromInvPacket(byte[] bytes, ref int i)
+ public RezSingleAttachmentFromInvPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RezSingleAttachmentFromInvPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
+ }
+
+ public RezSingleAttachmentFromInvPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -56579,11 +67666,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -56624,10 +67716,15 @@ namespace libsecondlife.Packets
public HeaderDataBlock() { }
public HeaderDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- CompoundMsgID = new LLUUID(bytes, i); i += 16;
+ CompoundMsgID.FromBytes(bytes, i); i += 16;
TotalObjects = (byte)bytes[i++];
FirstDetachAll = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
@@ -56701,12 +67798,17 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ItemID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
AttachmentPt = (byte)bytes[i++];
ItemFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -56789,27 +67891,54 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public RezMultipleAttachmentsFromInvPacket(byte[] bytes, ref int i)
+ public RezMultipleAttachmentsFromInvPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- HeaderData = new HeaderDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RezMultipleAttachmentsFromInvPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ HeaderData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public RezMultipleAttachmentsFromInvPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- HeaderData = new HeaderDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ HeaderData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -56863,11 +67992,16 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- ItemID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -56904,17 +68038,38 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock();
}
- public DetachAttachmentIntoInvPacket(byte[] bytes, ref int i)
+ public DetachAttachmentIntoInvPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public DetachAttachmentIntoInvPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ObjectData.FromBytes(bytes, ref i);
+ }
+
+ public DetachAttachmentIntoInvPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ObjectData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -56958,11 +68113,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -57001,10 +68161,15 @@ namespace libsecondlife.Packets
public HeaderDataBlock() { }
public HeaderDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- NewFolderID = new LLUUID(bytes, i); i += 16;
+ NewFolderID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -57042,11 +68207,16 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- OldItemID = new LLUUID(bytes, i); i += 16;
- OldFolderID = new LLUUID(bytes, i); i += 16;
+ OldItemID.FromBytes(bytes, i); i += 16;
+ OldFolderID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -57087,27 +68257,54 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public CreateNewOutfitAttachmentsPacket(byte[] bytes, ref int i)
+ public CreateNewOutfitAttachmentsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- HeaderData = new HeaderDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public CreateNewOutfitAttachmentsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ HeaderData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public CreateNewOutfitAttachmentsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- HeaderData = new HeaderDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ HeaderData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -57161,11 +68358,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -57202,17 +68404,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public UserInfoRequestPacket(byte[] bytes, ref int i)
+ public UserInfoRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UserInfoRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public UserInfoRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -57255,10 +68478,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -57320,6 +68548,11 @@ namespace libsecondlife.Packets
public UserDataBlock() { }
public UserDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -57377,19 +68610,40 @@ namespace libsecondlife.Packets
UserData = new UserDataBlock();
}
- public UserInfoReplyPacket(byte[] bytes, ref int i)
+ public UserInfoReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- UserData = new UserDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UserInfoReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ UserData.FromBytes(bytes, ref i);
+ }
+
+ public UserInfoReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- UserData = new UserDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ UserData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -57435,11 +68689,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -57491,6 +68750,11 @@ namespace libsecondlife.Packets
public UserDataBlock() { }
public UserDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -57539,19 +68803,40 @@ namespace libsecondlife.Packets
UserData = new UserDataBlock();
}
- public UpdateUserInfoPacket(byte[] bytes, ref int i)
+ public UpdateUserInfoPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- UserData = new UserDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public UpdateUserInfoPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ UserData.FromBytes(bytes, ref i);
+ }
+
+ public UpdateUserInfoPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- UserData = new UserDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ UserData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -57596,10 +68881,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -57660,6 +68950,11 @@ namespace libsecondlife.Packets
public FileDataBlock() { }
public FileDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -57713,19 +69008,40 @@ namespace libsecondlife.Packets
FileData = new FileDataBlock();
}
- public InitiateDownloadPacket(byte[] bytes, ref int i)
+ public InitiateDownloadPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- FileData = new FileDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public InitiateDownloadPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ FileData.FromBytes(bytes, ref i);
+ }
+
+ public InitiateDownloadPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- FileData = new FileDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ FileData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -57784,6 +69100,11 @@ namespace libsecondlife.Packets
public MethodDataBlock() { }
public MethodDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -57791,7 +69112,7 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_method = new byte[length];
Buffer.BlockCopy(bytes, i, _method, 0, length); i += length;
- Invoice = new LLUUID(bytes, i); i += 16;
+ Invoice.FromBytes(bytes, i); i += 16;
Digest = new byte[32];
Buffer.BlockCopy(bytes, i, Digest, 0, 32); i += 32;
}
@@ -57849,6 +69170,11 @@ namespace libsecondlife.Packets
public ParamListBlock() { }
public ParamListBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -57894,25 +69220,52 @@ namespace libsecondlife.Packets
ParamList = new ParamListBlock[0];
}
- public SystemMessagePacket(byte[] bytes, ref int i)
+ public SystemMessagePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- MethodData = new MethodDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ParamList = new ParamListBlock[count];
- for (int j = 0; j < count; j++)
- { ParamList[j] = new ParamListBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public SystemMessagePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ MethodData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ParamList.Length < count) {
+ ParamList = new ParamListBlock[count];
+ for(int j = 0; j < count; j++) ParamList[j] = new ParamListBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ParamList[j].FromBytes(bytes, ref i); }
+ }
+
+ public SystemMessagePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- MethodData = new MethodDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ MethodData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ParamList = new ParamListBlock[count];
+ if(ParamList.Length < count) {
+ ParamList = new ParamListBlock[count];
+ for(int j = 0; j < count; j++) ParamList[j] = new ParamListBlock();
+ }
for (int j = 0; j < count; j++)
- { ParamList[j] = new ParamListBlock(bytes, ref i); }
+ { ParamList[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -57967,11 +69320,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
EstateID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Godlike = (bytes[i++] != 0) ? (bool)true : (bool)false;
@@ -58023,17 +69381,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public MapLayerRequestPacket(byte[] bytes, ref int i)
+ public MapLayerRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MapLayerRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public MapLayerRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -58077,10 +69456,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -58127,6 +69511,11 @@ namespace libsecondlife.Packets
public LayerDataBlock() { }
public LayerDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -58134,7 +69523,7 @@ namespace libsecondlife.Packets
Right = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Top = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Bottom = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- ImageID = new LLUUID(bytes, i); i += 16;
+ ImageID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -58191,25 +69580,52 @@ namespace libsecondlife.Packets
LayerData = new LayerDataBlock[0];
}
- public MapLayerReplyPacket(byte[] bytes, ref int i)
+ public MapLayerReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- LayerData = new LayerDataBlock[count];
- for (int j = 0; j < count; j++)
- { LayerData[j] = new LayerDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MapLayerReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(LayerData.Length < count) {
+ LayerData = new LayerDataBlock[count];
+ for(int j = 0; j < count; j++) LayerData[j] = new LayerDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { LayerData[j].FromBytes(bytes, ref i); }
+ }
+
+ public MapLayerReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- LayerData = new LayerDataBlock[count];
+ if(LayerData.Length < count) {
+ LayerData = new LayerDataBlock[count];
+ for(int j = 0; j < count; j++) LayerData[j] = new LayerDataBlock();
+ }
for (int j = 0; j < count; j++)
- { LayerData[j] = new LayerDataBlock(bytes, ref i); }
+ { LayerData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -58264,11 +69680,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
EstateID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Godlike = (bytes[i++] != 0) ? (bool)true : (bool)false;
@@ -58325,6 +69746,11 @@ namespace libsecondlife.Packets
public PositionDataBlock() { }
public PositionDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -58378,19 +69804,40 @@ namespace libsecondlife.Packets
PositionData = new PositionDataBlock();
}
- public MapBlockRequestPacket(byte[] bytes, ref int i)
+ public MapBlockRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- PositionData = new PositionDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MapBlockRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ PositionData.FromBytes(bytes, ref i);
+ }
+
+ public MapBlockRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- PositionData = new PositionDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ PositionData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -58439,11 +69886,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
EstateID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Godlike = (bytes[i++] != 0) ? (bool)true : (bool)false;
@@ -58509,6 +69961,11 @@ namespace libsecondlife.Packets
public NameDataBlock() { }
public NameDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -58554,19 +70011,40 @@ namespace libsecondlife.Packets
NameData = new NameDataBlock();
}
- public MapNameRequestPacket(byte[] bytes, ref int i)
+ public MapNameRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- NameData = new NameDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MapNameRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ NameData.FromBytes(bytes, ref i);
+ }
+
+ public MapNameRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- NameData = new NameDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ NameData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -58612,10 +70090,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -58677,6 +70160,11 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -58690,7 +70178,7 @@ namespace libsecondlife.Packets
RegionFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
WaterHeight = (byte)bytes[i++];
Agents = (byte)bytes[i++];
- MapImageID = new LLUUID(bytes, i); i += 16;
+ MapImageID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -58749,25 +70237,52 @@ namespace libsecondlife.Packets
Data = new DataBlock[0];
}
- public MapBlockReplyPacket(byte[] bytes, ref int i)
+ public MapBlockReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- Data = new DataBlock[count];
- for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MapBlockReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Data[j].FromBytes(bytes, ref i); }
+ }
+
+ public MapBlockReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- Data = new DataBlock[count];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ { Data[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -58822,11 +70337,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
EstateID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Godlike = (bytes[i++] != 0) ? (bool)true : (bool)false;
@@ -58881,6 +70401,11 @@ namespace libsecondlife.Packets
public RequestDataBlock() { }
public RequestDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -58934,19 +70459,40 @@ namespace libsecondlife.Packets
RequestData = new RequestDataBlock();
}
- public MapItemRequestPacket(byte[] bytes, ref int i)
+ public MapItemRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- RequestData = new RequestDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MapItemRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RequestData.FromBytes(bytes, ref i);
+ }
+
+ public MapItemRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- RequestData = new RequestDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RequestData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -58992,10 +70538,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
Flags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -59038,6 +70589,11 @@ namespace libsecondlife.Packets
public RequestDataBlock() { }
public RequestDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -59098,13 +70654,18 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
X = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Y = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
Extra = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Extra2 = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
length = (ushort)bytes[i++];
@@ -59172,27 +70733,54 @@ namespace libsecondlife.Packets
Data = new DataBlock[0];
}
- public MapItemReplyPacket(byte[] bytes, ref int i)
+ public MapItemReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- RequestData = new RequestDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- Data = new DataBlock[count];
- for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MapItemReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RequestData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Data[j].FromBytes(bytes, ref i); }
+ }
+
+ public MapItemReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- RequestData = new RequestDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RequestData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- Data = new DataBlock[count];
+ if(Data.Length < count) {
+ Data = new DataBlock[count];
+ for(int j = 0; j < count; j++) Data[j] = new DataBlock();
+ }
for (int j = 0; j < count; j++)
- { Data[j] = new DataBlock(bytes, ref i); }
+ { Data[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -59311,14 +70899,19 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- AssetID = new LLUUID(bytes, i); i += 16;
- PosGlobal = new LLVector3d(bytes, i); i += 24;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ AssetID.FromBytes(bytes, i); i += 16;
+ PosGlobal.FromBytes(bytes, i); i += 24;
length = (ushort)bytes[i++];
_to = new byte[length];
Buffer.BlockCopy(bytes, i, _to, 0, length); i += length;
@@ -59406,17 +70999,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public SendPostcardPacket(byte[] bytes, ref int i)
+ public SendPostcardPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public SendPostcardPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public SendPostcardPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -59461,6 +71075,11 @@ namespace libsecondlife.Packets
public CommandBlockBlock() { }
public CommandBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -59515,17 +71134,38 @@ namespace libsecondlife.Packets
CommandBlock = new CommandBlockBlock();
}
- public ParcelMediaCommandMessagePacket(byte[] bytes, ref int i)
+ public ParcelMediaCommandMessagePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- CommandBlock = new CommandBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelMediaCommandMessagePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ CommandBlock.FromBytes(bytes, ref i);
+ }
+
+ public ParcelMediaCommandMessagePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- CommandBlock = new CommandBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ CommandBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -59582,6 +71222,11 @@ namespace libsecondlife.Packets
public DataBlockBlock() { }
public DataBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -59589,7 +71234,7 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_mediaurl = new byte[length];
Buffer.BlockCopy(bytes, i, _mediaurl, 0, length); i += length;
- MediaID = new LLUUID(bytes, i); i += 16;
+ MediaID.FromBytes(bytes, i); i += 16;
MediaAutoScale = (byte)bytes[i++];
}
catch (Exception)
@@ -59632,17 +71277,38 @@ namespace libsecondlife.Packets
DataBlock = new DataBlockBlock();
}
- public ParcelMediaUpdatePacket(byte[] bytes, ref int i)
+ public ParcelMediaUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- DataBlock = new DataBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelMediaUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ DataBlock.FromBytes(bytes, ref i);
+ }
+
+ public ParcelMediaUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- DataBlock = new DataBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ DataBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -59686,11 +71352,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -59744,6 +71415,11 @@ namespace libsecondlife.Packets
public RequestDataBlock() { }
public RequestDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -59808,19 +71484,40 @@ namespace libsecondlife.Packets
RequestData = new RequestDataBlock();
}
- public LandStatRequestPacket(byte[] bytes, ref int i)
+ public LandStatRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- RequestData = new RequestDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public LandStatRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RequestData.FromBytes(bytes, ref i);
+ }
+
+ public LandStatRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- RequestData = new RequestDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RequestData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -59867,6 +71564,11 @@ namespace libsecondlife.Packets
public RequestDataBlock() { }
public RequestDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -59952,12 +71654,17 @@ namespace libsecondlife.Packets
public ReportDataBlock() { }
public ReportDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
TaskLocalID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- TaskID = new LLUUID(bytes, i); i += 16;
+ TaskID.FromBytes(bytes, i); i += 16;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
LocationX = BitConverter.ToSingle(bytes, i); i += 4;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
@@ -60039,25 +71746,52 @@ namespace libsecondlife.Packets
ReportData = new ReportDataBlock[0];
}
- public LandStatReplyPacket(byte[] bytes, ref int i)
+ public LandStatReplyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- RequestData = new RequestDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ReportData = new ReportDataBlock[count];
- for (int j = 0; j < count; j++)
- { ReportData[j] = new ReportDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public LandStatReplyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RequestData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ReportData.Length < count) {
+ ReportData = new ReportDataBlock[count];
+ for(int j = 0; j < count; j++) ReportData[j] = new ReportDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ReportData[j].FromBytes(bytes, ref i); }
+ }
+
+ public LandStatReplyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- RequestData = new RequestDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RequestData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ReportData = new ReportDataBlock[count];
+ if(ReportData.Length < count) {
+ ReportData = new ReportDataBlock[count];
+ for(int j = 0; j < count; j++) ReportData[j] = new ReportDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ReportData[j] = new ReportDataBlock(bytes, ref i); }
+ { ReportData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -60108,10 +71842,15 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -60198,6 +71937,11 @@ namespace libsecondlife.Packets
public DataBlock() { }
public DataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -60206,7 +71950,7 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_token = new byte[length];
Buffer.BlockCopy(bytes, i, _token, 0, length); i += length;
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_system = new byte[length];
Buffer.BlockCopy(bytes, i, _system, 0, length); i += length;
@@ -60278,19 +72022,40 @@ namespace libsecondlife.Packets
Data = new DataBlock();
}
- public ErrorPacket(byte[] bytes, ref int i)
+ public ErrorPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ErrorPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
+ }
+
+ public ErrorPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- Data = new DataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ Data.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -60335,6 +72100,11 @@ namespace libsecondlife.Packets
public PacketsBlock() { }
public PacketsBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -60376,23 +72146,50 @@ namespace libsecondlife.Packets
Packets = new PacketsBlock[0];
}
- public PacketAckPacket(byte[] bytes, ref int i)
+ public PacketAckPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- int count = (int)bytes[i++];
- Packets = new PacketsBlock[count];
- for (int j = 0; j < count; j++)
- { Packets[j] = new PacketsBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public PacketAckPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ int count = (int)bytes[i++];
+ if(Packets.Length < count) {
+ Packets = new PacketsBlock[count];
+ for(int j = 0; j < count; j++) Packets[j] = new PacketsBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Packets[j].FromBytes(bytes, ref i); }
+ }
+
+ public PacketAckPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
int count = (int)bytes[i++];
- Packets = new PacketsBlock[count];
+ if(Packets.Length < count) {
+ Packets = new PacketsBlock[count];
+ for(int j = 0; j < count; j++) Packets[j] = new PacketsBlock();
+ }
for (int j = 0; j < count; j++)
- { Packets[j] = new PacketsBlock(bytes, ref i); }
+ { Packets[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -60442,6 +72239,11 @@ namespace libsecondlife.Packets
public CircuitInfoBlock() { }
public CircuitInfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -60487,17 +72289,38 @@ namespace libsecondlife.Packets
CircuitInfo = new CircuitInfoBlock();
}
- public OpenCircuitPacket(byte[] bytes, ref int i)
+ public OpenCircuitPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
- CircuitInfo = new CircuitInfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public OpenCircuitPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ CircuitInfo.FromBytes(bytes, ref i);
+ }
+
+ public OpenCircuitPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- CircuitInfo = new CircuitInfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ CircuitInfo.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -60536,15 +72359,36 @@ namespace libsecondlife.Packets
Header.Reliable = true;
}
- public CloseCircuitPacket(byte[] bytes, ref int i)
+ public CloseCircuitPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new LowHeader(bytes, ref i, ref packetEnd);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public CloseCircuitPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ }
+
+ public CloseCircuitPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
}
public override byte[] ToBytes()
@@ -60587,12 +72431,17 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -60661,6 +72510,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -60686,12 +72540,12 @@ namespace libsecondlife.Packets
ProfileEnd = (ushort)(bytes[i++] + (bytes[i++] << 8));
ProfileHollow = (ushort)(bytes[i++] + (bytes[i++] << 8));
BypassRaycast = (byte)bytes[i++];
- RayStart = new LLVector3(bytes, i); i += 12;
- RayEnd = new LLVector3(bytes, i); i += 12;
- RayTargetID = new LLUUID(bytes, i); i += 16;
+ RayStart.FromBytes(bytes, i); i += 12;
+ RayEnd.FromBytes(bytes, i); i += 12;
+ RayTargetID.FromBytes(bytes, i); i += 16;
RayEndIsIntersection = (byte)bytes[i++];
- Scale = new LLVector3(bytes, i); i += 12;
- Rotation = new LLQuaternion(bytes, i, true); i += 12;
+ Scale.FromBytes(bytes, i); i += 12;
+ Rotation.FromBytes(bytes, i, true); i += 12;
State = (byte)bytes[i++];
}
catch (Exception)
@@ -60793,19 +72647,40 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock();
}
- public ObjectAddPacket(byte[] bytes, ref int i)
+ public ObjectAddPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new MediumHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectAddPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
+ }
+
+ public ObjectAddPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -60851,11 +72726,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -60908,6 +72788,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -60962,25 +72847,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public MultipleObjectUpdatePacket(byte[] bytes, ref int i)
+ public MultipleObjectUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new MediumHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public MultipleObjectUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public MultipleObjectUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -61032,11 +72944,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -61076,6 +72993,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -61122,25 +73044,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public RequestMultipleObjectsPacket(byte[] bytes, ref int i)
+ public RequestMultipleObjectsPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new MediumHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RequestMultipleObjectsPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public RequestMultipleObjectsPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -61192,11 +73141,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -61236,11 +73190,16 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
ObjectLocalID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- Position = new LLVector3(bytes, i); i += 12;
+ Position.FromBytes(bytes, i); i += 12;
}
catch (Exception)
{
@@ -61282,25 +73241,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectPositionPacket(byte[] bytes, ref int i)
+ public ObjectPositionPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new MediumHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectPositionPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectPositionPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -61352,11 +73338,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -61396,11 +73387,16 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
RequestFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -61442,19 +73438,40 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock();
}
- public RequestObjectPropertiesFamilyPacket(byte[] bytes, ref int i)
+ public RequestObjectPropertiesFamilyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new MediumHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RequestObjectPropertiesFamilyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
+ }
+
+ public RequestObjectPropertiesFamilyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ObjectData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -61501,6 +73518,11 @@ namespace libsecondlife.Packets
public LocationBlock() { }
public LocationBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -61548,6 +73570,11 @@ namespace libsecondlife.Packets
public IndexBlock() { }
public IndexBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -61593,25 +73620,52 @@ namespace libsecondlife.Packets
Index = new IndexBlock();
}
- public CoarseLocationUpdatePacket(byte[] bytes, ref int i)
+ public CoarseLocationUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new MediumHeader(bytes, ref i, ref packetEnd);
- int count = (int)bytes[i++];
- Location = new LocationBlock[count];
- for (int j = 0; j < count; j++)
- { Location[j] = new LocationBlock(bytes, ref i); }
- Index = new IndexBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public CoarseLocationUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ int count = (int)bytes[i++];
+ if(Location.Length < count) {
+ Location = new LocationBlock[count];
+ for(int j = 0; j < count; j++) Location[j] = new LocationBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Location[j].FromBytes(bytes, ref i); }
+ Index.FromBytes(bytes, ref i);
+ }
+
+ public CoarseLocationUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
int count = (int)bytes[i++];
- Location = new LocationBlock[count];
+ if(Location.Length < count) {
+ Location = new LocationBlock[count];
+ for(int j = 0; j < count; j++) Location[j] = new LocationBlock();
+ }
for (int j = 0; j < count; j++)
- { Location[j] = new LocationBlock(bytes, ref i); }
- Index = new IndexBlock(bytes, ref i);
+ { Location[j].FromBytes(bytes, ref i); }
+ Index.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -61663,11 +73717,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -61721,6 +73780,11 @@ namespace libsecondlife.Packets
public RegionDataBlock() { }
public RegionDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -61788,11 +73852,16 @@ namespace libsecondlife.Packets
public InfoBlock() { }
public InfoBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- Position = new LLVector3(bytes, i); i += 12;
- LookAt = new LLVector3(bytes, i); i += 12;
+ Position.FromBytes(bytes, i); i += 12;
+ LookAt.FromBytes(bytes, i); i += 12;
}
catch (Exception)
{
@@ -61833,21 +73902,42 @@ namespace libsecondlife.Packets
Info = new InfoBlock();
}
- public CrossedRegionPacket(byte[] bytes, ref int i)
+ public CrossedRegionPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new MediumHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- RegionData = new RegionDataBlock(bytes, ref i);
- Info = new InfoBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public CrossedRegionPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RegionData.FromBytes(bytes, ref i);
+ Info.FromBytes(bytes, ref i);
+ }
+
+ public CrossedRegionPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- RegionData = new RegionDataBlock(bytes, ref i);
- Info = new InfoBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ RegionData.FromBytes(bytes, ref i);
+ Info.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -61895,11 +73985,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -61936,17 +74031,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public ConfirmEnableSimulatorPacket(byte[] bytes, ref int i)
+ public ConfirmEnableSimulatorPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new MediumHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ConfirmEnableSimulatorPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public ConfirmEnableSimulatorPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -62071,14 +74187,19 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
- CreatorID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
+ CreatorID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
CreationDate = (ulong)((ulong)bytes[i++] + ((ulong)bytes[i++] << 8) + ((ulong)bytes[i++] << 16) + ((ulong)bytes[i++] << 24) + ((ulong)bytes[i++] << 32) + ((ulong)bytes[i++] << 40) + ((ulong)bytes[i++] << 48) + ((ulong)bytes[i++] << 56));
BaseMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
OwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -62093,10 +74214,10 @@ namespace libsecondlife.Packets
AggregatePermTexturesOwner = (byte)bytes[i++];
Category = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
InventorySerial = (short)(bytes[i++] + (bytes[i++] << 8));
- ItemID = new LLUUID(bytes, i); i += 16;
- FolderID = new LLUUID(bytes, i); i += 16;
- FromTaskID = new LLUUID(bytes, i); i += 16;
- LastOwnerID = new LLUUID(bytes, i); i += 16;
+ ItemID.FromBytes(bytes, i); i += 16;
+ FolderID.FromBytes(bytes, i); i += 16;
+ FromTaskID.FromBytes(bytes, i); i += 16;
+ LastOwnerID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
@@ -62244,23 +74365,50 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectPropertiesPacket(byte[] bytes, ref int i)
+ public ObjectPropertiesPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new MediumHeader(bytes, ref i, ref packetEnd);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectPropertiesPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectPropertiesPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -62347,14 +74495,19 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
RequestFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- ObjectID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
- GroupID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
BaseMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
OwnerMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
GroupMask = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -62364,7 +74517,7 @@ namespace libsecondlife.Packets
SaleType = (byte)bytes[i++];
SalePrice = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Category = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- LastOwnerID = new LLUUID(bytes, i); i += 16;
+ LastOwnerID.FromBytes(bytes, i); i += 16;
length = (ushort)bytes[i++];
_name = new byte[length];
Buffer.BlockCopy(bytes, i, _name, 0, length); i += length;
@@ -62467,17 +74620,38 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock();
}
- public ObjectPropertiesFamilyPacket(byte[] bytes, ref int i)
+ public ObjectPropertiesFamilyPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new MediumHeader(bytes, ref i, ref packetEnd);
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectPropertiesFamilyPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ObjectData.FromBytes(bytes, ref i);
+ }
+
+ public ObjectPropertiesFamilyPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- ObjectData = new ObjectDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ObjectData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -62521,11 +74695,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -62569,6 +74748,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -62640,19 +74824,40 @@ namespace libsecondlife.Packets
ParcelData = new ParcelDataBlock();
}
- public ParcelPropertiesRequestPacket(byte[] bytes, ref int i)
+ public ParcelPropertiesRequestPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new MediumHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelPropertiesRequestPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
+ }
+
+ public ParcelPropertiesRequestPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ ParcelData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -62701,12 +74906,17 @@ namespace libsecondlife.Packets
public DataBlockBlock() { }
public DataBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- SoundID = new LLUUID(bytes, i); i += 16;
- ObjectID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
+ SoundID.FromBytes(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
Gain = BitConverter.ToSingle(bytes, i); i += 4;
Flags = (byte)bytes[i++];
@@ -62755,17 +74965,38 @@ namespace libsecondlife.Packets
DataBlock = new DataBlockBlock();
}
- public AttachedSoundPacket(byte[] bytes, ref int i)
+ public AttachedSoundPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new MediumHeader(bytes, ref i, ref packetEnd);
- DataBlock = new DataBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AttachedSoundPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ DataBlock.FromBytes(bytes, ref i);
+ }
+
+ public AttachedSoundPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- DataBlock = new DataBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ DataBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -62809,10 +75040,15 @@ namespace libsecondlife.Packets
public DataBlockBlock() { }
public DataBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
Gain = BitConverter.ToSingle(bytes, i); i += 4;
}
@@ -62854,17 +75090,38 @@ namespace libsecondlife.Packets
DataBlock = new DataBlockBlock();
}
- public AttachedSoundGainChangePacket(byte[] bytes, ref int i)
+ public AttachedSoundGainChangePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new MediumHeader(bytes, ref i, ref packetEnd);
- DataBlock = new DataBlockBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AttachedSoundGainChangePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ DataBlock.FromBytes(bytes, ref i);
+ }
+
+ public AttachedSoundGainChangePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- DataBlock = new DataBlockBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ DataBlock.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -62909,12 +75166,17 @@ namespace libsecondlife.Packets
public DataBlockBlock() { }
public DataBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
- SoundID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ SoundID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -62953,23 +75215,50 @@ namespace libsecondlife.Packets
DataBlock = new DataBlockBlock[0];
}
- public PreloadSoundPacket(byte[] bytes, ref int i)
+ public PreloadSoundPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new MediumHeader(bytes, ref i, ref packetEnd);
- int count = (int)bytes[i++];
- DataBlock = new DataBlockBlock[count];
- for (int j = 0; j < count; j++)
- { DataBlock[j] = new DataBlockBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public PreloadSoundPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ int count = (int)bytes[i++];
+ if(DataBlock.Length < count) {
+ DataBlock = new DataBlockBlock[count];
+ for(int j = 0; j < count; j++) DataBlock[j] = new DataBlockBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { DataBlock[j].FromBytes(bytes, ref i); }
+ }
+
+ public PreloadSoundPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
int count = (int)bytes[i++];
- DataBlock = new DataBlockBlock[count];
+ if(DataBlock.Length < count) {
+ DataBlock = new DataBlockBlock[count];
+ for(int j = 0; j < count; j++) DataBlock[j] = new DataBlockBlock();
+ }
for (int j = 0; j < count; j++)
- { DataBlock[j] = new DataBlockBlock(bytes, ref i); }
+ { DataBlock[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -63019,11 +75308,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -63079,12 +75373,17 @@ namespace libsecondlife.Packets
public EffectBlock() { }
public EffectBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- ID = new LLUUID(bytes, i); i += 16;
- AgentID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
Type = (byte)bytes[i++];
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
Duration = BitConverter.ToSingle(bytes, i); i += 4;
@@ -63145,25 +75444,52 @@ namespace libsecondlife.Packets
Effect = new EffectBlock[0];
}
- public ViewerEffectPacket(byte[] bytes, ref int i)
+ public ViewerEffectPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new MediumHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- Effect = new EffectBlock[count];
- for (int j = 0; j < count; j++)
- { Effect[j] = new EffectBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ViewerEffectPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(Effect.Length < count) {
+ Effect = new EffectBlock[count];
+ for(int j = 0; j < count; j++) Effect[j] = new EffectBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { Effect[j].FromBytes(bytes, ref i); }
+ }
+
+ public ViewerEffectPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- Effect = new EffectBlock[count];
+ if(Effect.Length < count) {
+ Effect = new EffectBlock[count];
+ for(int j = 0; j < count; j++) Effect[j] = new EffectBlock();
+ }
for (int j = 0; j < count; j++)
- { Effect[j] = new EffectBlock(bytes, ref i); }
+ { Effect[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -63215,6 +75541,11 @@ namespace libsecondlife.Packets
public PingIDBlock() { }
public PingIDBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -63259,17 +75590,38 @@ namespace libsecondlife.Packets
PingID = new PingIDBlock();
}
- public StartPingCheckPacket(byte[] bytes, ref int i)
+ public StartPingCheckPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- PingID = new PingIDBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public StartPingCheckPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ PingID.FromBytes(bytes, ref i);
+ }
+
+ public StartPingCheckPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- PingID = new PingIDBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ PingID.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -63312,6 +75664,11 @@ namespace libsecondlife.Packets
public PingIDBlock() { }
public PingIDBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -63350,17 +75707,38 @@ namespace libsecondlife.Packets
PingID = new PingIDBlock();
}
- public CompletePingCheckPacket(byte[] bytes, ref int i)
+ public CompletePingCheckPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- PingID = new PingIDBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public CompletePingCheckPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ PingID.FromBytes(bytes, ref i);
+ }
+
+ public CompletePingCheckPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- PingID = new PingIDBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ PingID.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -63414,18 +75792,23 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- BodyRotation = new LLQuaternion(bytes, i, true); i += 12;
- HeadRotation = new LLQuaternion(bytes, i, true); i += 12;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ BodyRotation.FromBytes(bytes, i, true); i += 12;
+ HeadRotation.FromBytes(bytes, i, true); i += 12;
State = (byte)bytes[i++];
- CameraCenter = new LLVector3(bytes, i); i += 12;
- CameraAtAxis = new LLVector3(bytes, i); i += 12;
- CameraLeftAxis = new LLVector3(bytes, i); i += 12;
- CameraUpAxis = new LLVector3(bytes, i); i += 12;
+ CameraCenter.FromBytes(bytes, i); i += 12;
+ CameraAtAxis.FromBytes(bytes, i); i += 12;
+ CameraLeftAxis.FromBytes(bytes, i); i += 12;
+ CameraUpAxis.FromBytes(bytes, i); i += 12;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
Far = BitConverter.ToSingle(bytes, i); i += 4;
ControlFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -63492,17 +75875,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public AgentUpdatePacket(byte[] bytes, ref int i)
+ public AgentUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public AgentUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -63546,11 +75950,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -63590,10 +75999,15 @@ namespace libsecondlife.Packets
public AnimationListBlock() { }
public AnimationListBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AnimID = new LLUUID(bytes, i); i += 16;
+ AnimID.FromBytes(bytes, i); i += 16;
StartAnim = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -63645,6 +76059,11 @@ namespace libsecondlife.Packets
public PhysicalAvatarEventListBlock() { }
public PhysicalAvatarEventListBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -63692,33 +76111,66 @@ namespace libsecondlife.Packets
PhysicalAvatarEventList = new PhysicalAvatarEventListBlock[0];
}
- public AgentAnimationPacket(byte[] bytes, ref int i)
+ public AgentAnimationPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- AnimationList = new AnimationListBlock[count];
- for (int j = 0; j < count; j++)
- { AnimationList[j] = new AnimationListBlock(bytes, ref i); }
- count = (int)bytes[i++];
- PhysicalAvatarEventList = new PhysicalAvatarEventListBlock[count];
- for (int j = 0; j < count; j++)
- { PhysicalAvatarEventList[j] = new PhysicalAvatarEventListBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentAnimationPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(AnimationList.Length < count) {
+ AnimationList = new AnimationListBlock[count];
+ for(int j = 0; j < count; j++) AnimationList[j] = new AnimationListBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { AnimationList[j].FromBytes(bytes, ref i); }
+ count = (int)bytes[i++];
+ if(PhysicalAvatarEventList.Length < count) {
+ PhysicalAvatarEventList = new PhysicalAvatarEventListBlock[count];
+ for(int j = 0; j < count; j++) PhysicalAvatarEventList[j] = new PhysicalAvatarEventListBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { PhysicalAvatarEventList[j].FromBytes(bytes, ref i); }
+ }
+
+ public AgentAnimationPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- AnimationList = new AnimationListBlock[count];
+ if(AnimationList.Length < count) {
+ AnimationList = new AnimationListBlock[count];
+ for(int j = 0; j < count; j++) AnimationList[j] = new AnimationListBlock();
+ }
for (int j = 0; j < count; j++)
- { AnimationList[j] = new AnimationListBlock(bytes, ref i); }
+ { AnimationList[j].FromBytes(bytes, ref i); }
count = (int)bytes[i++];
- PhysicalAvatarEventList = new PhysicalAvatarEventListBlock[count];
+ if(PhysicalAvatarEventList.Length < count) {
+ PhysicalAvatarEventList = new PhysicalAvatarEventListBlock[count];
+ for(int j = 0; j < count; j++) PhysicalAvatarEventList[j] = new PhysicalAvatarEventListBlock();
+ }
for (int j = 0; j < count; j++)
- { PhysicalAvatarEventList[j] = new PhysicalAvatarEventListBlock(bytes, ref i); }
+ { PhysicalAvatarEventList[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -63778,11 +76230,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -63822,11 +76279,16 @@ namespace libsecondlife.Packets
public TargetObjectBlock() { }
public TargetObjectBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- TargetID = new LLUUID(bytes, i); i += 16;
- Offset = new LLVector3(bytes, i); i += 12;
+ TargetID.FromBytes(bytes, i); i += 16;
+ Offset.FromBytes(bytes, i); i += 12;
}
catch (Exception)
{
@@ -63865,19 +76327,40 @@ namespace libsecondlife.Packets
TargetObject = new TargetObjectBlock();
}
- public AgentRequestSitPacket(byte[] bytes, ref int i)
+ public AgentRequestSitPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- TargetObject = new TargetObjectBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentRequestSitPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TargetObject.FromBytes(bytes, ref i);
+ }
+
+ public AgentRequestSitPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
- TargetObject = new TargetObjectBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ TargetObject.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -63923,11 +76406,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -63964,17 +76452,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public AgentSitPacket(byte[] bytes, ref int i)
+ public AgentSitPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AgentSitPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public AgentSitPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -64018,11 +76527,16 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -64065,10 +76579,15 @@ namespace libsecondlife.Packets
public RequestImageBlock() { }
public RequestImageBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- Image = new LLUUID(bytes, i); i += 16;
+ Image.FromBytes(bytes, i); i += 16;
DiscardLevel = (sbyte)bytes[i++];
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
DownloadPriority = BitConverter.ToSingle(bytes, i); i += 4;
@@ -64124,25 +76643,52 @@ namespace libsecondlife.Packets
RequestImage = new RequestImageBlock[0];
}
- public RequestImagePacket(byte[] bytes, ref int i)
+ public RequestImagePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- RequestImage = new RequestImageBlock[count];
- for (int j = 0; j < count; j++)
- { RequestImage[j] = new RequestImageBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public RequestImagePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(RequestImage.Length < count) {
+ RequestImage = new RequestImageBlock[count];
+ for(int j = 0; j < count; j++) RequestImage[j] = new RequestImageBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { RequestImage[j].FromBytes(bytes, ref i); }
+ }
+
+ public RequestImagePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- RequestImage = new RequestImageBlock[count];
+ if(RequestImage.Length < count) {
+ RequestImage = new RequestImageBlock[count];
+ for(int j = 0; j < count; j++) RequestImage[j] = new RequestImageBlock();
+ }
for (int j = 0; j < count; j++)
- { RequestImage[j] = new RequestImageBlock(bytes, ref i); }
+ { RequestImage[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -64196,10 +76742,15 @@ namespace libsecondlife.Packets
public ImageIDBlock() { }
public ImageIDBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
Codec = (byte)bytes[i++];
Size = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Packets = (ushort)(bytes[i++] + (bytes[i++] << 8));
@@ -64261,6 +76812,11 @@ namespace libsecondlife.Packets
public ImageDataBlock() { }
public ImageDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -64307,19 +76863,40 @@ namespace libsecondlife.Packets
ImageData = new ImageDataBlock();
}
- public ImageDataPacket(byte[] bytes, ref int i)
+ public ImageDataPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- ImageID = new ImageIDBlock(bytes, ref i);
- ImageData = new ImageDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ImageDataPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ImageID.FromBytes(bytes, ref i);
+ ImageData.FromBytes(bytes, ref i);
+ }
+
+ public ImageDataPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- ImageID = new ImageIDBlock(bytes, ref i);
- ImageData = new ImageDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ImageID.FromBytes(bytes, ref i);
+ ImageData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -64365,10 +76942,15 @@ namespace libsecondlife.Packets
public ImageIDBlock() { }
public ImageIDBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
Packet = (ushort)(bytes[i++] + (bytes[i++] << 8));
}
catch (Exception)
@@ -64421,6 +77003,11 @@ namespace libsecondlife.Packets
public ImageDataBlock() { }
public ImageDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -64467,19 +77054,40 @@ namespace libsecondlife.Packets
ImageData = new ImageDataBlock();
}
- public ImagePacketPacket(byte[] bytes, ref int i)
+ public ImagePacketPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- ImageID = new ImageIDBlock(bytes, ref i);
- ImageData = new ImageDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ImagePacketPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ImageID.FromBytes(bytes, ref i);
+ ImageData.FromBytes(bytes, ref i);
+ }
+
+ public ImagePacketPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- ImageID = new ImageIDBlock(bytes, ref i);
- ImageData = new ImageDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ImageID.FromBytes(bytes, ref i);
+ ImageData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -64524,6 +77132,11 @@ namespace libsecondlife.Packets
public LayerIDBlock() { }
public LayerIDBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -64576,6 +77189,11 @@ namespace libsecondlife.Packets
public LayerDataBlock() { }
public LayerDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -64622,19 +77240,40 @@ namespace libsecondlife.Packets
LayerData = new LayerDataBlock();
}
- public LayerDataPacket(byte[] bytes, ref int i)
+ public LayerDataPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- LayerID = new LayerIDBlock(bytes, ref i);
- LayerData = new LayerDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public LayerDataPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ LayerID.FromBytes(bytes, ref i);
+ LayerData.FromBytes(bytes, ref i);
+ }
+
+ public LayerDataPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- LayerID = new LayerIDBlock(bytes, ref i);
- LayerData = new LayerDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ LayerID.FromBytes(bytes, ref i);
+ LayerData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -64680,6 +77319,11 @@ namespace libsecondlife.Packets
public RegionDataBlock() { }
public RegionDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -64876,18 +77520,23 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
ID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
State = (byte)bytes[i++];
- FullID = new LLUUID(bytes, i); i += 16;
+ FullID.FromBytes(bytes, i); i += 16;
CRC = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
PCode = (byte)bytes[i++];
Material = (byte)bytes[i++];
ClickAction = (byte)bytes[i++];
- Scale = new LLVector3(bytes, i); i += 12;
+ Scale.FromBytes(bytes, i); i += 12;
length = (ushort)bytes[i++];
_objectdata = new byte[length];
Buffer.BlockCopy(bytes, i, _objectdata, 0, length); i += length;
@@ -64937,16 +77586,16 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_extraparams = new byte[length];
Buffer.BlockCopy(bytes, i, _extraparams, 0, length); i += length;
- Sound = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
+ Sound.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
Gain = BitConverter.ToSingle(bytes, i); i += 4;
Flags = (byte)bytes[i++];
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
Radius = BitConverter.ToSingle(bytes, i); i += 4;
JointType = (byte)bytes[i++];
- JointPivot = new LLVector3(bytes, i); i += 12;
- JointAxisOrAnchor = new LLVector3(bytes, i); i += 12;
+ JointPivot.FromBytes(bytes, i); i += 12;
+ JointAxisOrAnchor.FromBytes(bytes, i); i += 12;
}
catch (Exception)
{
@@ -65126,25 +77775,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectUpdatePacket(byte[] bytes, ref int i)
+ public ObjectUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- RegionData = new RegionDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RegionData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- RegionData = new RegionDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RegionData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -65196,6 +77872,11 @@ namespace libsecondlife.Packets
public RegionDataBlock() { }
public RegionDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -65260,6 +77941,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -65312,25 +77998,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectUpdateCompressedPacket(byte[] bytes, ref int i)
+ public ObjectUpdateCompressedPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- RegionData = new RegionDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectUpdateCompressedPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RegionData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectUpdateCompressedPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- RegionData = new RegionDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RegionData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -65382,6 +78095,11 @@ namespace libsecondlife.Packets
public RegionDataBlock() { }
public RegionDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -65435,6 +78153,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -65490,25 +78213,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ObjectUpdateCachedPacket(byte[] bytes, ref int i)
+ public ObjectUpdateCachedPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- RegionData = new RegionDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ObjectUpdateCachedPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RegionData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ObjectUpdateCachedPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- RegionData = new RegionDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RegionData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -65560,6 +78310,11 @@ namespace libsecondlife.Packets
public RegionDataBlock() { }
public RegionDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -65635,6 +78390,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -65689,25 +78449,52 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public ImprovedTerseObjectUpdatePacket(byte[] bytes, ref int i)
+ public ImprovedTerseObjectUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- RegionData = new RegionDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ImprovedTerseObjectUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RegionData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public ImprovedTerseObjectUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- RegionData = new RegionDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ RegionData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -65758,6 +78545,11 @@ namespace libsecondlife.Packets
public ObjectDataBlock() { }
public ObjectDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -65799,23 +78591,50 @@ namespace libsecondlife.Packets
ObjectData = new ObjectDataBlock[0];
}
- public KillObjectPacket(byte[] bytes, ref int i)
+ public KillObjectPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
- for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public KillObjectPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ int count = (int)bytes[i++];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { ObjectData[j].FromBytes(bytes, ref i); }
+ }
+
+ public KillObjectPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
int count = (int)bytes[i++];
- ObjectData = new ObjectDataBlock[count];
+ if(ObjectData.Length < count) {
+ ObjectData = new ObjectDataBlock[count];
+ for(int j = 0; j < count; j++) ObjectData[j] = new ObjectDataBlock();
+ }
for (int j = 0; j < count; j++)
- { ObjectData[j] = new ObjectDataBlock(bytes, ref i); }
+ { ObjectData[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -65880,11 +78699,16 @@ namespace libsecondlife.Packets
public TransferDataBlock() { }
public TransferDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
- TransferID = new LLUUID(bytes, i); i += 16;
+ TransferID.FromBytes(bytes, i); i += 16;
ChannelType = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Packet = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
Status = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
@@ -65945,17 +78769,38 @@ namespace libsecondlife.Packets
TransferData = new TransferDataBlock();
}
- public TransferPacketPacket(byte[] bytes, ref int i)
+ public TransferPacketPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- TransferData = new TransferDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public TransferPacketPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TransferData.FromBytes(bytes, ref i);
+ }
+
+ public TransferPacketPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- TransferData = new TransferDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ TransferData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -65999,6 +78844,11 @@ namespace libsecondlife.Packets
public XferIDBlock() { }
public XferIDBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -66064,6 +78914,11 @@ namespace libsecondlife.Packets
public DataPacketBlock() { }
public DataPacketBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -66110,19 +78965,40 @@ namespace libsecondlife.Packets
DataPacket = new DataPacketBlock();
}
- public SendXferPacketPacket(byte[] bytes, ref int i)
+ public SendXferPacketPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- XferID = new XferIDBlock(bytes, ref i);
- DataPacket = new DataPacketBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public SendXferPacketPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ XferID.FromBytes(bytes, ref i);
+ DataPacket.FromBytes(bytes, ref i);
+ }
+
+ public SendXferPacketPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- XferID = new XferIDBlock(bytes, ref i);
- DataPacket = new DataPacketBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ XferID.FromBytes(bytes, ref i);
+ DataPacket.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -66168,6 +79044,11 @@ namespace libsecondlife.Packets
public XferIDBlock() { }
public XferIDBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -66219,17 +79100,38 @@ namespace libsecondlife.Packets
XferID = new XferIDBlock();
}
- public ConfirmXferPacketPacket(byte[] bytes, ref int i)
+ public ConfirmXferPacketPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- XferID = new XferIDBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ConfirmXferPacketPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ XferID.FromBytes(bytes, ref i);
+ }
+
+ public ConfirmXferPacketPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- XferID = new XferIDBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ XferID.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -66272,10 +79174,15 @@ namespace libsecondlife.Packets
public SenderBlock() { }
public SenderBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -66313,10 +79220,15 @@ namespace libsecondlife.Packets
public AnimationListBlock() { }
public AnimationListBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- AnimID = new LLUUID(bytes, i); i += 16;
+ AnimID.FromBytes(bytes, i); i += 16;
AnimSequenceID = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
@@ -66359,10 +79271,15 @@ namespace libsecondlife.Packets
public AnimationSourceListBlock() { }
public AnimationSourceListBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ObjectID = new LLUUID(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -66411,6 +79328,11 @@ namespace libsecondlife.Packets
public PhysicalAvatarEventListBlock() { }
public PhysicalAvatarEventListBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -66460,41 +79382,80 @@ namespace libsecondlife.Packets
PhysicalAvatarEventList = new PhysicalAvatarEventListBlock[0];
}
- public AvatarAnimationPacket(byte[] bytes, ref int i)
+ public AvatarAnimationPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- Sender = new SenderBlock(bytes, ref i);
- int count = (int)bytes[i++];
- AnimationList = new AnimationListBlock[count];
- for (int j = 0; j < count; j++)
- { AnimationList[j] = new AnimationListBlock(bytes, ref i); }
- count = (int)bytes[i++];
- AnimationSourceList = new AnimationSourceListBlock[count];
- for (int j = 0; j < count; j++)
- { AnimationSourceList[j] = new AnimationSourceListBlock(bytes, ref i); }
- count = (int)bytes[i++];
- PhysicalAvatarEventList = new PhysicalAvatarEventListBlock[count];
- for (int j = 0; j < count; j++)
- { PhysicalAvatarEventList[j] = new PhysicalAvatarEventListBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AvatarAnimationPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Sender.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(AnimationList.Length < count) {
+ AnimationList = new AnimationListBlock[count];
+ for(int j = 0; j < count; j++) AnimationList[j] = new AnimationListBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { AnimationList[j].FromBytes(bytes, ref i); }
+ count = (int)bytes[i++];
+ if(AnimationSourceList.Length < count) {
+ AnimationSourceList = new AnimationSourceListBlock[count];
+ for(int j = 0; j < count; j++) AnimationSourceList[j] = new AnimationSourceListBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { AnimationSourceList[j].FromBytes(bytes, ref i); }
+ count = (int)bytes[i++];
+ if(PhysicalAvatarEventList.Length < count) {
+ PhysicalAvatarEventList = new PhysicalAvatarEventListBlock[count];
+ for(int j = 0; j < count; j++) PhysicalAvatarEventList[j] = new PhysicalAvatarEventListBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { PhysicalAvatarEventList[j].FromBytes(bytes, ref i); }
+ }
+
+ public AvatarAnimationPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- Sender = new SenderBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ Sender.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- AnimationList = new AnimationListBlock[count];
+ if(AnimationList.Length < count) {
+ AnimationList = new AnimationListBlock[count];
+ for(int j = 0; j < count; j++) AnimationList[j] = new AnimationListBlock();
+ }
for (int j = 0; j < count; j++)
- { AnimationList[j] = new AnimationListBlock(bytes, ref i); }
+ { AnimationList[j].FromBytes(bytes, ref i); }
count = (int)bytes[i++];
- AnimationSourceList = new AnimationSourceListBlock[count];
+ if(AnimationSourceList.Length < count) {
+ AnimationSourceList = new AnimationSourceListBlock[count];
+ for(int j = 0; j < count; j++) AnimationSourceList[j] = new AnimationSourceListBlock();
+ }
for (int j = 0; j < count; j++)
- { AnimationSourceList[j] = new AnimationSourceListBlock(bytes, ref i); }
+ { AnimationSourceList[j].FromBytes(bytes, ref i); }
count = (int)bytes[i++];
- PhysicalAvatarEventList = new PhysicalAvatarEventListBlock[count];
+ if(PhysicalAvatarEventList.Length < count) {
+ PhysicalAvatarEventList = new PhysicalAvatarEventListBlock[count];
+ for(int j = 0; j < count; j++) PhysicalAvatarEventList[j] = new PhysicalAvatarEventListBlock();
+ }
for (int j = 0; j < count; j++)
- { PhysicalAvatarEventList[j] = new PhysicalAvatarEventListBlock(bytes, ref i); }
+ { PhysicalAvatarEventList[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -66561,10 +79522,15 @@ namespace libsecondlife.Packets
public SitObjectBlock() { }
public SitObjectBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- ID = new LLUUID(bytes, i); i += 16;
+ ID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -66606,14 +79572,19 @@ namespace libsecondlife.Packets
public SitTransformBlock() { }
public SitTransformBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
AutoPilot = (bytes[i++] != 0) ? (bool)true : (bool)false;
- SitPosition = new LLVector3(bytes, i); i += 12;
- SitRotation = new LLQuaternion(bytes, i, true); i += 12;
- CameraEyeOffset = new LLVector3(bytes, i); i += 12;
- CameraAtOffset = new LLVector3(bytes, i); i += 12;
+ SitPosition.FromBytes(bytes, i); i += 12;
+ SitRotation.FromBytes(bytes, i, true); i += 12;
+ CameraEyeOffset.FromBytes(bytes, i); i += 12;
+ CameraAtOffset.FromBytes(bytes, i); i += 12;
ForceMouselook = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -66661,19 +79632,40 @@ namespace libsecondlife.Packets
SitTransform = new SitTransformBlock();
}
- public AvatarSitResponsePacket(byte[] bytes, ref int i)
+ public AvatarSitResponsePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- SitObject = new SitObjectBlock(bytes, ref i);
- SitTransform = new SitTransformBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public AvatarSitResponsePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ SitObject.FromBytes(bytes, ref i);
+ SitTransform.FromBytes(bytes, ref i);
+ }
+
+ public AvatarSitResponsePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- SitObject = new SitObjectBlock(bytes, ref i);
- SitTransform = new SitTransformBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ SitObject.FromBytes(bytes, ref i);
+ SitTransform.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -66718,10 +79710,15 @@ namespace libsecondlife.Packets
public CameraCollidePlaneBlock() { }
public CameraCollidePlaneBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- Plane = new LLVector4(bytes, i); i += 16;
+ Plane.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -66756,17 +79753,38 @@ namespace libsecondlife.Packets
CameraCollidePlane = new CameraCollidePlaneBlock();
}
- public CameraConstraintPacket(byte[] bytes, ref int i)
+ public CameraConstraintPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- CameraCollidePlane = new CameraCollidePlaneBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public CameraConstraintPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ CameraCollidePlane.FromBytes(bytes, ref i);
+ }
+
+ public CameraConstraintPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- CameraCollidePlane = new CameraCollidePlaneBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ CameraCollidePlane.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -66913,6 +79931,11 @@ namespace libsecondlife.Packets
public ParcelDataBlock() { }
public ParcelDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -66924,14 +79947,14 @@ namespace libsecondlife.Packets
OtherCount = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
PublicCount = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
LocalID = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- OwnerID = new LLUUID(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
IsGroupOwned = (bytes[i++] != 0) ? (bool)true : (bool)false;
AuctionID = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
ClaimDate = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
ClaimPrice = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
RentPrice = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- AABBMin = new LLVector3(bytes, i); i += 12;
- AABBMax = new LLVector3(bytes, i); i += 12;
+ AABBMin.FromBytes(bytes, i); i += 12;
+ AABBMax.FromBytes(bytes, i); i += 12;
length = (ushort)(bytes[i++] + (bytes[i++] << 8));
_bitmap = new byte[length];
Buffer.BlockCopy(bytes, i, _bitmap, 0, length); i += length;
@@ -66962,17 +79985,17 @@ namespace libsecondlife.Packets
length = (ushort)bytes[i++];
_mediaurl = new byte[length];
Buffer.BlockCopy(bytes, i, _mediaurl, 0, length); i += length;
- MediaID = new LLUUID(bytes, i); i += 16;
+ MediaID.FromBytes(bytes, i); i += 16;
MediaAutoScale = (byte)bytes[i++];
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
PassPrice = (int)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
PassHours = BitConverter.ToSingle(bytes, i); i += 4;
Category = (byte)bytes[i++];
- AuthBuyerID = new LLUUID(bytes, i); i += 16;
- SnapshotID = new LLUUID(bytes, i); i += 16;
- UserLocation = new LLVector3(bytes, i); i += 12;
- UserLookAt = new LLVector3(bytes, i); i += 12;
+ AuthBuyerID.FromBytes(bytes, i); i += 16;
+ SnapshotID.FromBytes(bytes, i); i += 16;
+ UserLocation.FromBytes(bytes, i); i += 12;
+ UserLookAt.FromBytes(bytes, i); i += 12;
LandingType = (byte)bytes[i++];
RegionPushOverride = (bytes[i++] != 0) ? (bool)true : (bool)false;
RegionDenyAnonymous = (bytes[i++] != 0) ? (bool)true : (bool)false;
@@ -67198,17 +80221,38 @@ namespace libsecondlife.Packets
ParcelData = new ParcelDataBlock();
}
- public ParcelPropertiesPacket(byte[] bytes, ref int i)
+ public ParcelPropertiesPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ParcelPropertiesPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ParcelData.FromBytes(bytes, ref i);
+ }
+
+ public ParcelPropertiesPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- ParcelData = new ParcelDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ ParcelData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -67299,21 +80343,26 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
{
RegionHandle = (ulong)((ulong)bytes[i++] + ((ulong)bytes[i++] << 8) + ((ulong)bytes[i++] << 16) + ((ulong)bytes[i++] << 24) + ((ulong)bytes[i++] << 32) + ((ulong)bytes[i++] << 40) + ((ulong)bytes[i++] << 48) + ((ulong)bytes[i++] << 56));
ViewerCircuitCode = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- AgentPos = new LLVector3(bytes, i); i += 12;
- AgentVel = new LLVector3(bytes, i); i += 12;
- Center = new LLVector3(bytes, i); i += 12;
- Size = new LLVector3(bytes, i); i += 12;
- AtAxis = new LLVector3(bytes, i); i += 12;
- LeftAxis = new LLVector3(bytes, i); i += 12;
- UpAxis = new LLVector3(bytes, i); i += 12;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ AgentPos.FromBytes(bytes, i); i += 12;
+ AgentVel.FromBytes(bytes, i); i += 12;
+ Center.FromBytes(bytes, i); i += 12;
+ Size.FromBytes(bytes, i); i += 12;
+ AtAxis.FromBytes(bytes, i); i += 12;
+ LeftAxis.FromBytes(bytes, i); i += 12;
+ UpAxis.FromBytes(bytes, i); i += 12;
ChangedGrid = (bytes[i++] != 0) ? (bool)true : (bool)false;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
Far = BitConverter.ToSingle(bytes, i); i += 4;
@@ -67323,19 +80372,19 @@ namespace libsecondlife.Packets
_throttles = new byte[length];
Buffer.BlockCopy(bytes, i, _throttles, 0, length); i += length;
LocomotionState = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- HeadRotation = new LLQuaternion(bytes, i, true); i += 12;
- BodyRotation = new LLQuaternion(bytes, i, true); i += 12;
+ HeadRotation.FromBytes(bytes, i, true); i += 12;
+ BodyRotation.FromBytes(bytes, i, true); i += 12;
ControlFlags = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
EnergyLevel = BitConverter.ToSingle(bytes, i); i += 4;
GodLevel = (byte)bytes[i++];
AlwaysRun = (bytes[i++] != 0) ? (bool)true : (bool)false;
- PreyAgent = new LLUUID(bytes, i); i += 16;
+ PreyAgent.FromBytes(bytes, i); i += 16;
AgentAccess = (byte)bytes[i++];
length = (ushort)(bytes[i++] + (bytes[i++] << 8));
_agenttextures = new byte[length];
Buffer.BlockCopy(bytes, i, _agenttextures, 0, length); i += length;
- ActiveGroupID = new LLUUID(bytes, i); i += 16;
+ ActiveGroupID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -67454,10 +80503,15 @@ namespace libsecondlife.Packets
public GroupDataBlock() { }
public GroupDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GroupID = new LLUUID(bytes, i); i += 16;
+ GroupID.FromBytes(bytes, i); i += 16;
GroupPowers = (ulong)((ulong)bytes[i++] + ((ulong)bytes[i++] << 8) + ((ulong)bytes[i++] << 16) + ((ulong)bytes[i++] << 24) + ((ulong)bytes[i++] << 32) + ((ulong)bytes[i++] << 40) + ((ulong)bytes[i++] << 48) + ((ulong)bytes[i++] << 56));
AcceptNotices = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
@@ -67508,11 +80562,16 @@ namespace libsecondlife.Packets
public AnimationDataBlock() { }
public AnimationDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- Animation = new LLUUID(bytes, i); i += 16;
- ObjectID = new LLUUID(bytes, i); i += 16;
+ Animation.FromBytes(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -67551,10 +80610,15 @@ namespace libsecondlife.Packets
public GranterBlockBlock() { }
public GranterBlockBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- GranterID = new LLUUID(bytes, i); i += 16;
+ GranterID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -67603,6 +80667,11 @@ namespace libsecondlife.Packets
public NVPairDataBlock() { }
public NVPairDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
int length;
try
@@ -67649,6 +80718,11 @@ namespace libsecondlife.Packets
public VisualParamBlock() { }
public VisualParamBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
@@ -67697,57 +80771,108 @@ namespace libsecondlife.Packets
VisualParam = new VisualParamBlock[0];
}
- public ChildAgentUpdatePacket(byte[] bytes, ref int i)
+ public ChildAgentUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
- int count = (int)bytes[i++];
- GroupData = new GroupDataBlock[count];
- for (int j = 0; j < count; j++)
- { GroupData[j] = new GroupDataBlock(bytes, ref i); }
- count = (int)bytes[i++];
- AnimationData = new AnimationDataBlock[count];
- for (int j = 0; j < count; j++)
- { AnimationData[j] = new AnimationDataBlock(bytes, ref i); }
- count = (int)bytes[i++];
- GranterBlock = new GranterBlockBlock[count];
- for (int j = 0; j < count; j++)
- { GranterBlock[j] = new GranterBlockBlock(bytes, ref i); }
- count = (int)bytes[i++];
- NVPairData = new NVPairDataBlock[count];
- for (int j = 0; j < count; j++)
- { NVPairData[j] = new NVPairDataBlock(bytes, ref i); }
- count = (int)bytes[i++];
- VisualParam = new VisualParamBlock[count];
- for (int j = 0; j < count; j++)
- { VisualParam[j] = new VisualParamBlock(bytes, ref i); }
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ChildAgentUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ int count = (int)bytes[i++];
+ if(GroupData.Length < count) {
+ GroupData = new GroupDataBlock[count];
+ for(int j = 0; j < count; j++) GroupData[j] = new GroupDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { GroupData[j].FromBytes(bytes, ref i); }
+ count = (int)bytes[i++];
+ if(AnimationData.Length < count) {
+ AnimationData = new AnimationDataBlock[count];
+ for(int j = 0; j < count; j++) AnimationData[j] = new AnimationDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { AnimationData[j].FromBytes(bytes, ref i); }
+ count = (int)bytes[i++];
+ if(GranterBlock.Length < count) {
+ GranterBlock = new GranterBlockBlock[count];
+ for(int j = 0; j < count; j++) GranterBlock[j] = new GranterBlockBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { GranterBlock[j].FromBytes(bytes, ref i); }
+ count = (int)bytes[i++];
+ if(NVPairData.Length < count) {
+ NVPairData = new NVPairDataBlock[count];
+ for(int j = 0; j < count; j++) NVPairData[j] = new NVPairDataBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { NVPairData[j].FromBytes(bytes, ref i); }
+ count = (int)bytes[i++];
+ if(VisualParam.Length < count) {
+ VisualParam = new VisualParamBlock[count];
+ for(int j = 0; j < count; j++) VisualParam[j] = new VisualParamBlock();
+ }
+ for (int j = 0; j < count; j++)
+ { VisualParam[j].FromBytes(bytes, ref i); }
+ }
+
+ public ChildAgentUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
int count = (int)bytes[i++];
- GroupData = new GroupDataBlock[count];
+ if(GroupData.Length < count) {
+ GroupData = new GroupDataBlock[count];
+ for(int j = 0; j < count; j++) GroupData[j] = new GroupDataBlock();
+ }
for (int j = 0; j < count; j++)
- { GroupData[j] = new GroupDataBlock(bytes, ref i); }
+ { GroupData[j].FromBytes(bytes, ref i); }
count = (int)bytes[i++];
- AnimationData = new AnimationDataBlock[count];
+ if(AnimationData.Length < count) {
+ AnimationData = new AnimationDataBlock[count];
+ for(int j = 0; j < count; j++) AnimationData[j] = new AnimationDataBlock();
+ }
for (int j = 0; j < count; j++)
- { AnimationData[j] = new AnimationDataBlock(bytes, ref i); }
+ { AnimationData[j].FromBytes(bytes, ref i); }
count = (int)bytes[i++];
- GranterBlock = new GranterBlockBlock[count];
+ if(GranterBlock.Length < count) {
+ GranterBlock = new GranterBlockBlock[count];
+ for(int j = 0; j < count; j++) GranterBlock[j] = new GranterBlockBlock();
+ }
for (int j = 0; j < count; j++)
- { GranterBlock[j] = new GranterBlockBlock(bytes, ref i); }
+ { GranterBlock[j].FromBytes(bytes, ref i); }
count = (int)bytes[i++];
- NVPairData = new NVPairDataBlock[count];
+ if(NVPairData.Length < count) {
+ NVPairData = new NVPairDataBlock[count];
+ for(int j = 0; j < count; j++) NVPairData[j] = new NVPairDataBlock();
+ }
for (int j = 0; j < count; j++)
- { NVPairData[j] = new NVPairDataBlock(bytes, ref i); }
+ { NVPairData[j].FromBytes(bytes, ref i); }
count = (int)bytes[i++];
- VisualParam = new VisualParamBlock[count];
+ if(VisualParam.Length < count) {
+ VisualParam = new VisualParamBlock[count];
+ for(int j = 0; j < count; j++) VisualParam[j] = new VisualParamBlock();
+ }
for (int j = 0; j < count; j++)
- { VisualParam[j] = new VisualParamBlock(bytes, ref i); }
+ { VisualParam[j].FromBytes(bytes, ref i); }
}
public override byte[] ToBytes()
@@ -67833,13 +80958,18 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
RegionHandle = (ulong)((ulong)bytes[i++] + ((ulong)bytes[i++] << 8) + ((ulong)bytes[i++] << 16) + ((ulong)bytes[i++] << 24) + ((ulong)bytes[i++] << 32) + ((ulong)bytes[i++] << 40) + ((ulong)bytes[i++] << 48) + ((ulong)bytes[i++] << 56));
ViewerCircuitCode = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
}
catch (Exception)
{
@@ -67890,17 +81020,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public ChildAgentAlivePacket(byte[] bytes, ref int i)
+ public ChildAgentAlivePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ChildAgentAlivePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public ChildAgentAlivePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -67954,20 +81105,25 @@ namespace libsecondlife.Packets
public AgentDataBlock() { }
public AgentDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
RegionHandle = (ulong)((ulong)bytes[i++] + ((ulong)bytes[i++] << 8) + ((ulong)bytes[i++] << 16) + ((ulong)bytes[i++] << 24) + ((ulong)bytes[i++] << 32) + ((ulong)bytes[i++] << 40) + ((ulong)bytes[i++] << 48) + ((ulong)bytes[i++] << 56));
ViewerCircuitCode = (uint)(bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
- AgentID = new LLUUID(bytes, i); i += 16;
- SessionID = new LLUUID(bytes, i); i += 16;
- AgentPos = new LLVector3(bytes, i); i += 12;
- AgentVel = new LLVector3(bytes, i); i += 12;
- Center = new LLVector3(bytes, i); i += 12;
- Size = new LLVector3(bytes, i); i += 12;
- AtAxis = new LLVector3(bytes, i); i += 12;
- LeftAxis = new LLVector3(bytes, i); i += 12;
- UpAxis = new LLVector3(bytes, i); i += 12;
+ AgentID.FromBytes(bytes, i); i += 16;
+ SessionID.FromBytes(bytes, i); i += 16;
+ AgentPos.FromBytes(bytes, i); i += 12;
+ AgentVel.FromBytes(bytes, i); i += 12;
+ Center.FromBytes(bytes, i); i += 12;
+ Size.FromBytes(bytes, i); i += 12;
+ AtAxis.FromBytes(bytes, i); i += 12;
+ LeftAxis.FromBytes(bytes, i); i += 12;
+ UpAxis.FromBytes(bytes, i); i += 12;
ChangedGrid = (bytes[i++] != 0) ? (bool)true : (bool)false;
}
catch (Exception)
@@ -68035,17 +81191,38 @@ namespace libsecondlife.Packets
AgentData = new AgentDataBlock();
}
- public ChildAgentPositionUpdatePacket(byte[] bytes, ref int i)
+ public ChildAgentPositionUpdatePacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- AgentData = new AgentDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public ChildAgentPositionUpdatePacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
+ }
+
+ public ChildAgentPositionUpdatePacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- AgentData = new AgentDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ AgentData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
@@ -68094,15 +81271,20 @@ namespace libsecondlife.Packets
public SoundDataBlock() { }
public SoundDataBlock(byte[] bytes, ref int i)
+ {
+ FromBytes(bytes, ref i);
+ }
+
+ public void FromBytes(byte[] bytes, ref int i)
{
try
{
- SoundID = new LLUUID(bytes, i); i += 16;
- OwnerID = new LLUUID(bytes, i); i += 16;
- ObjectID = new LLUUID(bytes, i); i += 16;
- ParentID = new LLUUID(bytes, i); i += 16;
+ SoundID.FromBytes(bytes, i); i += 16;
+ OwnerID.FromBytes(bytes, i); i += 16;
+ ObjectID.FromBytes(bytes, i); i += 16;
+ ParentID.FromBytes(bytes, i); i += 16;
Handle = (ulong)((ulong)bytes[i++] + ((ulong)bytes[i++] << 8) + ((ulong)bytes[i++] << 16) + ((ulong)bytes[i++] << 24) + ((ulong)bytes[i++] << 32) + ((ulong)bytes[i++] << 40) + ((ulong)bytes[i++] << 48) + ((ulong)bytes[i++] << 56));
- Position = new LLVector3(bytes, i); i += 12;
+ Position.FromBytes(bytes, i); i += 12;
if (!BitConverter.IsLittleEndian) Array.Reverse(bytes, i, 4);
Gain = BitConverter.ToSingle(bytes, i); i += 4;
}
@@ -68161,17 +81343,38 @@ namespace libsecondlife.Packets
SoundData = new SoundDataBlock();
}
- public SoundTriggerPacket(byte[] bytes, ref int i)
+ public SoundTriggerPacket(byte[] bytes, ref int i) : this()
{
int packetEnd = bytes.Length - 1;
- Header = new HighHeader(bytes, ref i, ref packetEnd);
- SoundData = new SoundDataBlock(bytes, ref i);
+ FromBytes(bytes, ref i, ref packetEnd, null);
}
- public SoundTriggerPacket(Header head, byte[] bytes, ref int i)
+ override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
+ {
+ header.FromBytes(bytes, ref i, ref packetEnd);
+ if (header.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ SoundData.FromBytes(bytes, ref i);
+ }
+
+ public SoundTriggerPacket(Header head, byte[] bytes, ref int i): this()
+ {
+ int packetEnd = bytes.Length - 1;
+ FromBytes(head, bytes, ref i, ref packetEnd, null);
+ }
+
+ override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)
{
Header = head;
- SoundData = new SoundDataBlock(bytes, ref i);
+ if (head.Zerocoded && zeroBuffer != null)
+ {
+ packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;
+ bytes = zeroBuffer;
+ }
+ SoundData.FromBytes(bytes, ref i);
}
public override byte[] ToBytes()
diff --git a/libsecondlife/mapgenerator/mapgenerator.cs b/libsecondlife/mapgenerator/mapgenerator.cs
index 9c7bae3f..fdbed477 100644
--- a/libsecondlife/mapgenerator/mapgenerator.cs
+++ b/libsecondlife/mapgenerator/mapgenerator.cs
@@ -128,24 +128,19 @@ namespace mapgenerator
" = (ushort)(bytes[i++] + (bytes[i++] << 8));");
break;
case FieldType.LLQuaternion:
- writer.WriteLine(" " + field.Name +
- " = new LLQuaternion(bytes, i, true); i += 12;");
+ writer.WriteLine(" " + field.Name + ".FromBytes(bytes, i, true); i += 12;");
break;
case FieldType.LLUUID:
- writer.WriteLine(" " + field.Name +
- " = new LLUUID(bytes, i); i += 16;");
+ writer.WriteLine(" " + field.Name + ".FromBytes(bytes, i); i += 16;");
break;
case FieldType.LLVector3:
- writer.WriteLine(" " + field.Name +
- " = new LLVector3(bytes, i); i += 12;");
+ writer.WriteLine(" " + field.Name + ".FromBytes(bytes, i); i += 12;");
break;
case FieldType.LLVector3d:
- writer.WriteLine(" " + field.Name +
- " = new LLVector3d(bytes, i); i += 24;");
+ writer.WriteLine(" " + field.Name + ".FromBytes(bytes, i); i += 24;");
break;
case FieldType.LLVector4:
- writer.WriteLine(" " + field.Name +
- " = new LLVector4(bytes, i); i += 16;");
+ writer.WriteLine(" " + field.Name + ".FromBytes(bytes, i); i += 16;");
break;
case FieldType.S16:
writer.WriteLine(" " + field.Name +
@@ -383,6 +378,12 @@ namespace mapgenerator
// Constructor for building the class from bytes
//writer.WriteLine(" /// Constructor for building the block from a byte array");
writer.WriteLine(" public " + block.Name + "Block(byte[] bytes, ref int i)" + Environment.NewLine +
+ " {" + Environment.NewLine +
+ " FromBytes(bytes, ref i);" + Environment.NewLine +
+ " }" + Environment.NewLine);
+
+ // Initiates instance variables from a byte message
+ writer.WriteLine(" public void FromBytes(byte[] bytes, ref int i)" + Environment.NewLine +
" {");
// Declare a length variable if we need it for variable fields in this constructor
@@ -505,8 +506,7 @@ namespace mapgenerator
else
{
// Multiple count block
- writer.WriteLine(" " + sanitizedName + " = new " + block.Name +
- "Block[" + block.Count + "];");
+ writer.WriteLine(" " + sanitizedName + " = new " + block.Name + "Block[" + block.Count + "];");
}
}
writer.WriteLine(" }" + Environment.NewLine);
@@ -514,10 +514,20 @@ namespace mapgenerator
// Constructor that takes a byte array and beginning position only (no prebuilt header)
bool seenVariable = false;
//writer.WriteLine(" /// Constructor that takes a byte array and beginning position (no prebuilt header)");
- writer.WriteLine(" public " + packet.Name + "Packet(byte[] bytes, ref int i)" + Environment.NewLine + " {");
- writer.WriteLine(" int packetEnd = bytes.Length - 1;");
- writer.WriteLine(" Header = new " + packet.Frequency.ToString() +
- "Header(bytes, ref i, ref packetEnd);");
+ writer.WriteLine(" public " + packet.Name + "Packet(byte[] bytes, ref int i) : this()" + Environment.NewLine +
+ " {" + Environment.NewLine +
+ " int packetEnd = bytes.Length - 1;" + Environment.NewLine +
+ " FromBytes(bytes, ref i, ref packetEnd, null);" + Environment.NewLine +
+ " }" + Environment.NewLine);
+
+ writer.WriteLine(" override public void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)" + Environment.NewLine + " {");
+ writer.WriteLine(" header.FromBytes(bytes, ref i, ref packetEnd);");
+ writer.WriteLine(" if (header.Zerocoded && zeroBuffer != null)");
+ writer.WriteLine(" {");
+ writer.WriteLine(" packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;");
+ writer.WriteLine(" bytes = zeroBuffer;");
+ writer.WriteLine(" }");
+
foreach (MapBlock block in packet.Blocks)
{
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
@@ -526,7 +536,7 @@ namespace mapgenerator
if (block.Count == 1)
{
// Single count block
- writer.WriteLine(" " + sanitizedName + " = new " + block.Name + "Block(bytes, ref i);");
+ writer.WriteLine(" " + sanitizedName + ".FromBytes(bytes, ref i);");
}
else if (block.Count == -1)
{
@@ -540,19 +550,22 @@ namespace mapgenerator
{
writer.WriteLine(" count = (int)bytes[i++];");
}
- writer.WriteLine(" " + sanitizedName + " = new " + block.Name + "Block[count];");
+ writer.WriteLine(" if(" + sanitizedName + ".Length < count) {");
+ writer.WriteLine(" " + sanitizedName + " = new " + block.Name + "Block[count];");
+ writer.WriteLine(" for(int j = 0; j < count; j++) " + sanitizedName + "[j] = new " + block.Name + "Block();");
+ writer.WriteLine(" }");
writer.WriteLine(" for (int j = 0; j < count; j++)");
- writer.WriteLine(" { " + sanitizedName + "[j] = new " +
- block.Name + "Block(bytes, ref i); }");
+ writer.WriteLine(" { " + sanitizedName + "[j].FromBytes(bytes, ref i); }");
}
else
{
// Multiple count block
- writer.WriteLine(" " + sanitizedName + " = new " + block.Name +
- "Block[" + block.Count + "];");
+ writer.WriteLine(" if(" + sanitizedName + ".Length < " + block.Count+") {");
+ writer.WriteLine(" " + sanitizedName + " = new " + block.Name + "Block[" + block.Count + "];");
+ writer.WriteLine(" for(int j = 0; j < " + block.Count + "; j++) " + sanitizedName + "[j] = new " + block.Name + "Block();");
+ writer.WriteLine(" }");
writer.WriteLine(" for (int j = 0; j < " + block.Count + "; j++)");
- writer.WriteLine(" { " + sanitizedName + "[j] = new " +
- block.Name + "Block(bytes, ref i); }");
+ writer.WriteLine(" { " + sanitizedName + "[j].FromBytes(bytes, ref i); }");
}
}
writer.WriteLine(" }" + Environment.NewLine);
@@ -561,9 +574,19 @@ namespace mapgenerator
// Constructor that takes a byte array and a prebuilt header
//writer.WriteLine(" /// Constructor that takes a byte array and a prebuilt header");
- writer.WriteLine(" public " + packet.Name +
- "Packet(Header head, byte[] bytes, ref int i)" + Environment.NewLine + " {");
+ writer.WriteLine(" public " + packet.Name + "Packet(Header head, byte[] bytes, ref int i): this()" + Environment.NewLine +
+ " {" + Environment.NewLine +
+ " int packetEnd = bytes.Length - 1;" + Environment.NewLine +
+ " FromBytes(head, bytes, ref i, ref packetEnd, null);" + Environment.NewLine +
+ " }" + Environment.NewLine);
+
+ writer.WriteLine(" override public void FromBytes(Header head, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer)" + Environment.NewLine + " {");
writer.WriteLine(" Header = head;");
+ writer.WriteLine(" if (head.Zerocoded && zeroBuffer != null)");
+ writer.WriteLine(" {");
+ writer.WriteLine(" packetEnd = Helpers.ZeroDecode(bytes, packetEnd + 1, zeroBuffer) - 1;");
+ writer.WriteLine(" bytes = zeroBuffer;");
+ writer.WriteLine(" }");
foreach (MapBlock block in packet.Blocks)
{
if (block.Name == "Header") { sanitizedName = "_" + block.Name; }
@@ -572,7 +595,7 @@ namespace mapgenerator
if (block.Count == 1)
{
// Single count block
- writer.WriteLine(" " + sanitizedName + " = new " + block.Name + "Block(bytes, ref i);");
+ writer.WriteLine(" " + sanitizedName + ".FromBytes(bytes, ref i);");
}
else if (block.Count == -1)
{
@@ -586,19 +609,22 @@ namespace mapgenerator
{
writer.WriteLine(" count = (int)bytes[i++];");
}
- writer.WriteLine(" " + sanitizedName + " = new " + block.Name + "Block[count];");
+ writer.WriteLine(" if(" + sanitizedName + ".Length < count) {");
+ writer.WriteLine(" " + sanitizedName + " = new " + block.Name + "Block[count];");
+ writer.WriteLine(" for(int j = 0; j < count; j++) " + sanitizedName + "[j] = new " + block.Name + "Block();");
+ writer.WriteLine(" }");
writer.WriteLine(" for (int j = 0; j < count; j++)");
- writer.WriteLine(" { " + sanitizedName + "[j] = new " +
- block.Name + "Block(bytes, ref i); }");
+ writer.WriteLine(" { " + sanitizedName + "[j].FromBytes(bytes, ref i); }");
}
else
{
// Multiple count block
- writer.WriteLine(" " + sanitizedName + " = new " + block.Name +
- "Block[" + block.Count + "];");
+ writer.WriteLine(" if(" + sanitizedName + ".Length < " + block.Count+") {");
+ writer.WriteLine(" " + sanitizedName + " = new " + block.Name + "Block[" + block.Count + "];");
+ writer.WriteLine(" for(int j = 0; j < " + block.Count + "; j++) " + sanitizedName + "[j] = new " + block.Name + "Block();");
+ writer.WriteLine(" }");
writer.WriteLine(" for (int j = 0; j < " + block.Count + "; j++)");
- writer.WriteLine(" { " + sanitizedName + "[j] = new " +
- block.Name + "Block(bytes, ref i); }");
+ writer.WriteLine(" { " + sanitizedName + "[j].FromBytes(bytes, ref i); }");
}
}
writer.WriteLine(" }" + Environment.NewLine);
@@ -808,7 +834,9 @@ namespace mapgenerator
" public abstract partial class Packet" + Environment.NewLine + " {" + Environment.NewLine +
" public abstract Header Header { get; set; }" + Environment.NewLine +
" public abstract PacketType Type { get; }" + Environment.NewLine +
- " internal int TickCount;" + Environment.NewLine + Environment.NewLine +
+ " public abstract void FromBytes(byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer);" + Environment.NewLine +
+ " public abstract void FromBytes(Header header, byte[] bytes, ref int i, ref int packetEnd, byte[] zeroBuffer);" + Environment.NewLine +
+ " public int TickCount;" + Environment.NewLine + Environment.NewLine +
" public abstract byte[] ToBytes();" //+ Environment.NewLine + Environment.NewLine +
//" public void ToXml(XmlWriter xmlWriter)" + Environment.NewLine +
//" {" + Environment.NewLine +
@@ -848,6 +876,42 @@ namespace mapgenerator
" break;" + Environment.NewLine + " }" + Environment.NewLine + Environment.NewLine +
" return PacketType.Default;" + Environment.NewLine + " }" + Environment.NewLine);
+ // Write the Packet.GetType() function
+ writer.WriteLine(
+ " public static PacketType GetType(byte[] bytes, int packetEnd, byte[] zeroBuffer)" + Environment.NewLine +
+ " {" + Environment.NewLine + " ushort id; PacketFrequency freq;" + Environment.NewLine +
+ " int i = 0, end = packetEnd;" + Environment.NewLine +
+ " Header header = Header.BuildHeader(bytes, ref i, ref end);" + Environment.NewLine +
+ " if (header.Zerocoded)" + Environment.NewLine + " {" + Environment.NewLine +
+ " end = Helpers.ZeroDecode(bytes, end + 1, zeroBuffer) - 1;" + Environment.NewLine +
+ " bytes = zeroBuffer;" + Environment.NewLine + " }" + Environment.NewLine + Environment.NewLine +
+ " if (bytes[6] == 0xFF)" + Environment.NewLine + " {" + Environment.NewLine +
+ " if (bytes[7] == 0xFF)" + Environment.NewLine + " {" + Environment.NewLine +
+ " id = (ushort)((bytes[8] << 8) + bytes[9]); freq = PacketFrequency.Low;" + Environment.NewLine +
+ " }" + Environment.NewLine +
+ " else" + Environment.NewLine +
+ " {" + Environment.NewLine + " id = (ushort)bytes[7]; freq = PacketFrequency.Medium;" +
+ Environment.NewLine + " }" + Environment.NewLine + " }" + Environment.NewLine +
+ " else" + Environment.NewLine + " {" + Environment.NewLine +
+ " id = (ushort)bytes[6]; freq = PacketFrequency.High;" + Environment.NewLine +
+ " }" + Environment.NewLine +
+ " return GetType(id, freq);" + Environment.NewLine +
+ " }" + Environment.NewLine);
+
+ // Write the Packet.BuildPacket(PacketType) function
+ writer.WriteLine(" public static Packet BuildPacket(PacketType type)");
+ writer.WriteLine(" {");
+ foreach (MapPacket packet in protocol.HighMaps)
+ if (packet != null)
+ writer.WriteLine(" if(type == PacketType." + packet.Name + ") return new " + packet.Name +"Packet();");
+ foreach (MapPacket packet in protocol.MediumMaps)
+ if (packet != null)
+ writer.WriteLine(" if(type == PacketType." + packet.Name + ") return new " + packet.Name +"Packet();");
+ foreach (MapPacket packet in protocol.LowMaps)
+ if (packet != null)
+ writer.WriteLine(" if(type == PacketType." + packet.Name + ") return new " + packet.Name +"Packet();");
+ writer.WriteLine(" return null;\n");
+ writer.WriteLine(" }\n");
// Write the Packet.BuildPacket() function
writer.WriteLine(
diff --git a/libsecondlife/mapgenerator/template.cs b/libsecondlife/mapgenerator/template.cs
index 38671a8c..4f7e2a30 100644
--- a/libsecondlife/mapgenerator/template.cs
+++ b/libsecondlife/mapgenerator/template.cs
@@ -113,6 +113,8 @@ namespace libsecondlife.Packets
/// Array containing all the appended ACKs of this packet
public uint[] AckList;
+ public abstract void FromBytes(byte[] bytes, ref int pos, ref int packetEnd);
+
///
/// Convert the AckList to a byte array, used for packet serializing
///
@@ -226,6 +228,11 @@ namespace libsecondlife.Packets
///
///
public LowHeader(byte[] bytes, ref int pos, ref int packetEnd)
+ {
+ FromBytes(bytes, ref pos, ref packetEnd);
+ }
+
+ override public void FromBytes(byte[] bytes, ref int pos, ref int packetEnd)
{
if (bytes.Length < 10) { throw new MalformedDataException(); }
Data = new byte[10];
@@ -290,6 +297,11 @@ namespace libsecondlife.Packets
///
///
public MediumHeader(byte[] bytes, ref int pos, ref int packetEnd)
+ {
+ FromBytes(bytes, ref pos, ref packetEnd);
+ }
+
+ override public void FromBytes(byte[] bytes, ref int pos, ref int packetEnd)
{
if (bytes.Length < 8) { throw new MalformedDataException(); }
Data = new byte[8];
@@ -340,6 +352,11 @@ namespace libsecondlife.Packets
///
///
public HighHeader(byte[] bytes, ref int pos, ref int packetEnd)
+ {
+ FromBytes(bytes, ref pos, ref packetEnd);
+ }
+
+ override public void FromBytes(byte[] bytes, ref int pos, ref int packetEnd)
{
if (bytes.Length < 7) { throw new MalformedDataException(); }
Data = new byte[7];