Exemplo n.º 1
0
        private MapNodeTube ConstructTubeTree(Transform root15, Transform baseSrc, Transform baseDstRedu)
        {
            Queue <MapNode>     bfsQSrc = new Queue <MapNode>();
            Queue <MapNodeTube> bfsQDst = new Queue <MapNodeTube>();

            Debug.Assert(m_rootOut.name == root15.name);
            MapNodeTube rootTube = new MapNodeTube(m_rootOut, root15, baseSrc, baseDstRedu);

            bfsQSrc.Enqueue(m_rootOut);
            bfsQDst.Enqueue(rootTube);
            //bind tree(m_rootOut) with transform tree(rootDstRedu)
            while (bfsQSrc.Count > 0)
            {
                Debug.Assert(bfsQDst.Count > 0);
                MapNode     p_nodeOut  = bfsQSrc.Dequeue();
                MapNodeTube p_nodeTube = bfsQDst.Dequeue();
                p_nodeTube.children = new MapNodeTube[p_nodeOut.children.Count];
                for (int i_childSrc = 0; i_childSrc < p_nodeOut.children.Count; i_childSrc++)
                {
                    MapNode c_nodeOut = (MapNode)p_nodeOut.children[i_childSrc];
                    Debug.Assert(null != p_nodeTube.nodeOut.Find(c_nodeOut.name));
                    MapNodeTube c_nodeTube = new MapNodeTube(c_nodeOut, p_nodeTube.nodeOut.Find(c_nodeOut.name), baseSrc, baseDstRedu);
                    p_nodeTube.children[i_childSrc] = c_nodeTube;
                    bfsQSrc.Enqueue(c_nodeOut);
                    bfsQDst.Enqueue(c_nodeTube);
                }
            }

            return(rootTube);
        }
Exemplo n.º 2
0
 public new void Initialize(Transform rootSrc, Transform rootDstIgnore, Transform rootDstRedu
                            , Transform baseSrc, Transform baseDstIgnore, Transform baseDstRedu
                            , string[] j_ori, string[] j_redu)
 {
     base.Initialize(rootSrc, j_ori, j_redu);
     m_rootTubeRedu   = ConstructTubeTree(rootDstRedu, baseSrc, baseDstRedu);
     m_rootTubeIgnore = ConstructTubeTree(rootDstIgnore, baseSrc, baseDstIgnore);
 }
Exemplo n.º 3
0
        private void UpdateTubeCmp(MapNodeTube tube15)
        {
            Queue <MapNodeTube> bfsQ = new Queue <MapNodeTube>();

            bfsQ.Enqueue(tube15);
            while (bfsQ.Count > 0)
            {
                MapNodeTube p_tube = bfsQ.Dequeue();
                p_tube.UpdateCmp();
                for (int i_child = 0; i_child < p_tube.children.Length; i_child++)
                {
                    MapNodeTube c_tube = p_tube.children[i_child];
                    bfsQ.Enqueue(c_tube);
                }
            }
        }