예제 #1
0
    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);
        }
    }
예제 #2
0
    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);
    }