Example #1
0
        /// <summary>
        /// Serializes all frames to a message
        /// </summary>
        /// <param name="objectListManager"></param>
        /// <param name="previousFrames"></param>
        public NetworkObjectListFrameListUpdate SerializeFrames(BaseNetworkObjectListManager objectListManager, FrameList previousFrames)
        {
            var frameListMessage = new NetworkObjectListFrameListUpdate();

            foreach (var frame in _frames)
            {
                var objectList = objectListManager.InternalFindListById(frame.ListId);

                var previousFrame = previousFrames?.FindFrameByListId(frame.ListId);

                var result = frame.Serialize(objectList, previousFrame);

                //TODO: check if anything was written to allow discarding of empty frames

                frameListMessage.Frames.Add(result);
            }

            return(frameListMessage);
        }
Example #2
0
        public static FrameList DeserializeFrameList(BaseNetworkObjectListManager listManager, FrameList previousFrames, NetworkObjectListFrameListUpdate frameListMessage)
        {
            var frameList = new FrameList();

            foreach (var frameMessage in frameListMessage.Frames)
            {
                if (listManager.InternalFindListById((int)frameMessage.ListId) == null)
                {
                    throw new InvalidOperationException($"List with id {frameMessage.ListId} does not exist");
                }

                var previousFrame = previousFrames?.FindFrameByListId((int)frameMessage.ListId);

                frameList.AddFrame(Frame.Deserialize(frameMessage, listManager.TypeRegistry, previousFrame));
            }

            return(frameList);
        }