コード例 #1
0
        public override void Enter()
        {
            OverCardPicker.SizeBonus = 0;
            OverMap.SizeMult         = 0;
            CenterCount            = -1;
            CurrentCenter          = 0;
            BlockPlayerWorldViewer = true;
            ProgressSpeed          = 0.005f;
            LastNode = null;
            NextNode = null;

            NodeCount     = 0;
            NodesProgress = 1;
            SortedNodes.Clear();

            SceneObject s = GameManager.GetLevel().getCurrentScene();

            WorldCamera = (Camera3DObject)s.FindObject(typeof(Camera3DObject));

            if (WorldCamera == null)
            {
                s.ParentLevel.AddObject(WorldCamera = new Camera3DObject());
            }

            WorldCamera.RemoveTag(GameObjectTag.Update);

            foreach (CameraFlybyCenter center in s.Enumerate(typeof(CameraFlybyCenter)))
            {
                if (!SortedCenters.ContainsKey(center.CenterOrder.get()))
                {
                    SortedCenters.Add(center.CenterOrder.get(), center);
                    CenterCount = CenterCount > center.CenterOrder.get() ? CenterCount : center.CenterOrder.get();
                }
            }

            foreach (CameraFlybyNode node in s.Enumerate(typeof(CameraFlybyNode)))
            {
                if (!SortedNodes.ContainsKey(node.NodeOrder.get()))
                {
                    SortedNodes[node.NodeOrder.get()] = new List <CameraFlybyNode>();
                }
                SortedNodes[node.NodeOrder.get()].Add(node);
                NodeCount = NodeCount > node.NodeOrder.get() ? NodeCount : node.NodeOrder.get();
            }

            int i = 0;

            while (LastNode == null)
            {
                LastNode = GetNode(i);
                i++;

                if (i > NodeCount)
                {
                    return;
                }
            }

            while (NextNode == null)
            {
                NextNode = GetNode(i);
                i++;

                if (i > NodeCount)
                {
                    return;
                }
            }

            base.Enter();
        }