public void Deserialize(PacketReader stream) { ReleaseAllResult(); m_nodeParentIndex.Clear(); m_results.Clear(); int count = stream.ReadCompressInt(); for (int i = 0; i < count; i++) { int idx = stream.ReadCompressInt(); m_nodeParentIndex.Add(idx); } for (int i = 0; i < count; i++) { int classID = stream.ReadCompressInt(); IResult result = m_context.CreateResult(classID); result.Deserialize(stream); m_results.Add(result); } }
public virtual IResult CreateResult(int classID) { if (m_parent != null) { return(m_parent.CreateResult(classID)); } IResult r = m_resultPool.GetObjectFromPool(classID) as IResult; if (r != null) { return(r); } IResultFactory f = null; if (m_resultFactory.TryGetValue(classID, out f)) { return(f()); } return(null); }