Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="step"></param>
        /// <param name="newTrack"></param>
        /// <param name="transcen"></param>
        /// <param name="reverse"></param>
        /// <returns>cmd 를 소모해야하는지 여부. true일 경우 큐에서 날린다. false일 경우 날리지 않고 다음 프레임에 계속 체크해본다</returns>
        bool _StepMove(int step, Data.Track newTrack, Data.TransitionScenario transcen, int newstep = -1, bool reverse = false)
        {
            //Debug.Log(string.Format("m_curTrackStep : {0}, step : {1}", m_curTrackStep, step));
            if (m_curTrackStep == step)                                         // 동일한 step으로 진행하는 요청이 들어온 경우엔 무시한다.
            {
                Debug.Log("[LibSequentia] same step");
                return(true);
            }

            // 현재 진행중인 요청이 stepmove고, 한번 더 진행이 가능한 경우에는 따로 요청을 늘리지 않는다. (자연 -> 강제 전환으로 바꾸는 것임)
            var stepMoveReq = m_reqQueue.Count > 0 ? m_reqQueue.Peek() as StepMoveRequest : null;

            if (stepMoveReq != null && stepMoveReq.MoveOnceMore(reverse))
            {
                return(true);
            }

            if (stepMoveReq == null)                                    // 현재 진행중인 요청이 stepmove가 아닌 경우에만 새 명령을 추가한다.
            {
                var newreq = new StepMoveRequest(this);
                //var newstep		= m_newTrackIsOn? m_newTrackStep : m_curTrackStep;
                //newstep			+= reverse? -1 : 1;
                newreq.Setup(step, newstep, reverse, newTrack, transcen);

                m_reqQueue.Enqueue(newreq);

                return(true);
            }
            else
            {                                                                                   // stepmove가 맞긴 맞는데 위 moveoncemore 를 실패한 경우라면, 이 명령은 소모해서는 안됨
                return(false);
            }
        }
Example #2
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="step"></param>
        /// <param name="newTrack"></param>
        /// <param name="transcen"></param>
        /// <param name="reverse"></param>
        /// <returns>cmd 를 소모해야하는지 여부. true일 경우 큐에서 날린다. false일 경우 날리지 않고 다음 프레임에 계속 체크해본다</returns>
        bool _StepMove(int step, Data.Track newTrack, Data.TransitionScenario transcen, int newstep = -1, bool reverse = false)
        {
            //Debug.Log(string.Format("m_curTrackStep : {0}, step : {1}", m_curTrackStep, step));
            if (m_curTrackStep == step)				// 동일한 step으로 진행하는 요청이 들어온 경우엔 무시한다.
            {
                Debug.Log("[LibSequentia] same step");
                return true;
            }

            // 현재 진행중인 요청이 stepmove고, 한번 더 진행이 가능한 경우에는 따로 요청을 늘리지 않는다. (자연 -> 강제 전환으로 바꾸는 것임)
            var stepMoveReq	= m_reqQueue.Count > 0 ? m_reqQueue.Peek() as StepMoveRequest : null;
            if (stepMoveReq != null && stepMoveReq.MoveOnceMore(reverse))
            {
                return true;
            }

            if (stepMoveReq == null)			// 현재 진행중인 요청이 stepmove가 아닌 경우에만 새 명령을 추가한다.
            {
                var newreq		= new StepMoveRequest(this);
                //var newstep		= m_newTrackIsOn? m_newTrackStep : m_curTrackStep;
                //newstep			+= reverse? -1 : 1;
                newreq.Setup(step, newstep, reverse, newTrack, transcen);

                m_reqQueue.Enqueue(newreq);

                return true;
            }
            else
            {									// stepmove가 맞긴 맞는데 위 moveoncemore 를 실패한 경우라면, 이 명령은 소모해서는 안됨
                return false;
            }
        }