/// <summary> /// Attempts to extract a SceneObjectGroup from the given byte array /// </summary> /// <param name="bytes"></param> /// <returns></returns> public OpenSim.Region.Framework.Scenes.SceneObjectGroup DeserializeGroupFromInventoryBytes(byte[] bytes) { CheckHeader(bytes, HeaderTestFlag.CheckValidGroup | HeaderTestFlag.ThrowOnFailedCheck); //we should be able to proceed Serialization.SceneObjectGroupSnapshot snap = Serialization.SceneObjectGroupSnapshot.FromBytes(bytes, GROUP_HEADER.Length); return(snap.ToSceneObjectGroup()); }
public byte[] SerializeGroupToBytes(OpenSim.Region.Framework.Scenes.SceneObjectGroup group, SerializationFlags flags) { Serialization.SceneObjectGroupSnapshot snap = Serialization.SceneObjectGroupSnapshot.FromSceneObjectGroup(group, flags); using (MemoryStream ms = new MemoryStream()) { ProtoBuf.Serializer.Serialize <Serialization.SceneObjectGroupSnapshot>(ms, snap); return(ms.ToArray()); } }
/// <summary> /// Serializes a group into a byte array suitable for storage and retrieval from inventory /// </summary> /// <param name="group"></param> /// <returns></returns> public byte[] SerializeGroupToInventoryBytes(OpenSim.Region.Framework.Scenes.SceneObjectGroup group, SerializationFlags flags) { Serialization.SceneObjectGroupSnapshot snap = Serialization.SceneObjectGroupSnapshot.FromSceneObjectGroup(group, flags); using (MemoryStream ms = new MemoryStream()) { ms.Write(GROUP_HEADER, 0, GROUP_HEADER.Length); snap.SerializeToStream(ms); return(ms.ToArray()); } }