Ejemplo n.º 1
0
        public void LeaveScene(XGameSceneNode node)
        {
            node.scene.LeaveScene();
            int index = CurrScenes.Count - 1;

            if (node == CurrScenes[index])
            {
                CurrScenes.RemoveAt(index);
            }
        }
Ejemplo n.º 2
0
        public void AddScene(string name, XGameScene scene)
        {
            if (m_dictSceneNodes.ContainsKey(name) || scene == null)
            {
                return;
            }
            scene.SetName(name);
            var node = new XGameSceneNode(scene);

            m_dictSceneNodes.Add(name, node);
        }
Ejemplo n.º 3
0
        //查找切换到节点node,进入的节点列表
        public void FindChangeSceneList(XGameSceneNode target, List <XGameSceneNode> enterScenes, List <XGameSceneNode> leaveScenes)
        {
            //查找待进入的场景列表
            enterScenes.Clear();
            while (target != null)
            {
                if (CurrScenes.Contains(target))
                {
                    break;
                }
                enterScenes.Add(target);
                target = target.parent;
            }
            enterScenes.Reverse();

            //查找待退出的场景列表
            leaveScenes.Clear();
            if (target == null)
            {
                leaveScenes.AddRange(CurrScenes);
            }
            else
            {
                var flag = false;
                foreach (var node in CurrScenes)
                {
                    if (node == target)
                    {
                        flag = true;
                        continue;
                    }
                    if (flag)
                    {
                        leaveScenes.Add(node);
                    }
                }
            }
            leaveScenes.Reverse();
        }
Ejemplo n.º 4
0
 public void EnterScene(XGameSceneNode node)
 {
     node.scene.EnterScene();
     CurrScenes.Add(node);
 }