Exemplo n.º 1
0
        public void ReadFixedNumberOfLinesQuickly()
        {
            int  i        = 0;
            bool complete = false;

            var lines = Yields.GetLines("TestLines.txt");

            var start = DateTime.Now;

            foreach (var line in lines)
            {
                Console.WriteLine(line);

                ++i;

                if (line.Contains("That's ten!"))
                {
                    complete = true;
                    break;
                }
            }

            var end = DateTime.Now;

            Assert.Equal(10, i);
            Assert.True(complete);
            // less than 10 ms to complete?
            Assert.True((end - start).TotalMilliseconds < 10);
        }
        IEnumerator Start()
        {
            // warming up. new instance with 1 second delay will be allocated here.
            yield return(Yields.WaitForSeconds(1f));

            var startTime = Time.time;

            // no new allocations - reuse pooled instance.
            yield return(Yields.WaitForSeconds(1f));

            // should be around 1.
            Debug.Log(Time.time - startTime);

            // no new allocations - reuse pooled instance.
            yield return(Yields.WaitForSeconds(1f));

            // should be around 2.
            Debug.Log(Time.time - startTime);

            // new instance with 2 seconds delay will be allocated here.
            yield return(Yields.WaitForSeconds(2f));

            // should be around 4.
            Debug.Log(Time.time - startTime);

            // case for checking that it works without GC allocations - you can open profiler and check it.
            StartCoroutine(OnTest1());
            while (true)
            {
                // Debug.Log("at start");

                // no new allocations - reuse pooled instance.
                yield return(Yields.WaitForSeconds(2f));
            }
        }
Exemplo n.º 3
0
        public void TimeoutReadingLinesOneAtATime()
        {
            int linesRead = 0;

            Action a = () =>
            {
                var lines   = Yields.GetLines("TestLines.txt");
                var timeout = DateTime.Now.AddSeconds(5);

                foreach (var line in lines)
                {
                    // write to the console to slow us down
                    Console.WriteLine(line);

                    ++linesRead;

                    if (DateTime.Now > timeout)
                    {
                        throw new TimeoutException();
                    }
                }
            };

            Assert.Throws <TimeoutException>(() => a());
            Assert.InRange(linesRead, 100, 1000000); // actual length 1,187,770 lines
        }
Exemplo n.º 4
0
    /**
     *  @brief  NPC Animation 재생 이벤트,
     *          우선 코루틴으로 만들어 두고 후에 필요하면 Play, Stop함수 만들어 코루틴 제어하자.
     */
    IEnumerator NpcAniPlay()
    {
        int aniIdx = (int)playAni;

        while (true)
        {
            float loopTime = playTime;

            //랜덤 모드 일 경우 재생할 AniIdx 랜덤하게 변경
            if (playMode == PlayMode.RANDOM)
            {
                aniIdx = Random.Range(0, npcAniName.Length - 1);
            }

            //Play Time 체크
            npcAnim.SetBool("IsPlay", true);
            while ((loopTime -= Time.deltaTime) > 0)
            {
                npcAnim.Play(npcAniName[aniIdx]);
                yield return(Yields.EndOfFrame);
            }
            npcAnim.SetBool("IsPlay", false);

            //플레이가 끝나면 대기시간 만큼 대기
            yield return(Yields.WaitSeconds(waitTime));
        }
    }
Exemplo n.º 5
0
        public async Task <IActionResult> Edit(int id, [Bind("YieldId,Yield,CostPerTray,ProductsId,DateIn,DateOut")] Yields yields)
        {
            if (id != yields.YieldId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(yields);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!YieldsExists(yields.YieldId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ProductsId"] = new SelectList(_context.Products, "Id", "Id", yields.ProductsId);
            return(View(yields));
        }
Exemplo n.º 6
0
    /**
     *  @brief  열기구가 바닥에 착지하면 플레이어가 일어나며 플레이어 카메라를 셋팅.
     */
    IEnumerator LandingEvent()
    {
        yield return(Yields.WaitSeconds(1f));

        Destroy(eventCamOne);
        Destroy(eventCamTwo);

        PlayerInfo.Instance.Anim.speed = 1;
    }
Exemplo n.º 7
0
    /**
     *  @brief  animation 재생 후 역재생
     */
    private IEnumerator PlayAndReverseEffectTime()
    {
        yield return(PlayEffectTime());

        currentPlayTime = endPlayTime;
        yield return(Yields.WaitSeconds(3f));

        yield return(ReverceEffectTime());
    }
Exemplo n.º 8
0
        protected override System.Collections.IEnumerator PurchaseInternal(
            FutureTask <bool> future,
            int count)
        {
            yield return(Yields.WaitForNextPolling());

            future.Set(true);
            yield break;
        }
Exemplo n.º 9
0
    /**
     *  @brief  BGM 정보 출력
     *  @param  info : 출력할 배경음 정보
     */
    private IEnumerator PrintBgmInfo(BgmInfo info)
    {
        yield return(Yields.WaitSeconds(3.0f));

        string txt = "BGM INFO\n" +
                     "Artist : " + info.artist + "\n" +
                     "Title : " + info.title;

        NotifyMessageEvent.Instance.PrintSubText(txt);
    }
        IEnumerator OnTest1()
        {
            while (true)
            {
                // Debug.Log("at ontest1");

                // no new allocations - reuse pooled instance.
                yield return(Yields.WaitForSeconds(1f));
            }
        }
Exemplo n.º 11
0
        public async Task <IActionResult> Create([Bind("YieldId,Yield,CostPerTray,ProductsId,DateIn,DateOut")] Yields yields)
        {
            if (ModelState.IsValid)
            {
                _context.Add(yields);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["ProductsId"] = new SelectList(_context.Products, "Id", "Id", yields.ProductsId);
            return(View(yields));
        }
Exemplo n.º 12
0
    /**
     *  @brief  Player가 기구에서 내리면 큐브로 변경 후 이벤트 오브젝트 제거
     */
    IEnumerator EndEvent()
    {
        yield return(Yields.WaitSeconds(1.0f));

        balloon.SetActive(false);
        yield return(ParticleManager.Play(psBalloon));

        WeaponManager.Instance.SetCubeWeapon();
        miniMap.SetActive(true);

        Destroy(this.transform.parent.gameObject);
    }
Exemplo n.º 13
0
        public void CountTo()
        {
            var expected = new List <int> {
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10
            };
            var index = 0;

            foreach (var count in Yields.CountTo(10))
            {
                Assert.Equal(count, expected[index]);
                ++index;
            }
        }
Exemplo n.º 14
0
    /**
     *  @brief  list에 있는 텍스트 mesh를 랜덤하게 대상으로 선택해 파티클 형성
     */
    IEnumerator PlayTextParticle()
    {
        while (meshs.Count > 0)
        {
            var idx   = Random.Range(0, meshs.Count - 1);
            var shape = ps.shape;
            shape.mesh = meshs[idx];

            yield return(ParticleManager.Play(ps));

            yield return(Yields.WaitSeconds(3f));
        }
    }
Exemplo n.º 15
0
    /**
     *  @brief  낙하 중인 플레이어에 열기구를 생성해 낙하 속도를 줄인다.
     */
    IEnumerator PlayThirdEvent()
    {
        //큐브가 플레이어의 낙하 방향으로 하강
        iTween.MoveTo(cube, iTween.Hash("position", balloon.transform.position, "time", 8));
        yield return(Yields.WaitSeconds(1.5f));

        psCube.Stop();

        //큐브가 플레이어를 따라잡으면 2번 카메라 셋 후 열기구 애니메이션 실행
        eventCamTwo.SetActive(true);
        yield return(ParticleManager.Play(psBalloon));

        balloon.SetActive(true);
    }
Exemplo n.º 16
0
        public void ExecuteFinallyBlockWhenEnumeratorDisposed()
        {
            var previousFinallyCount = Yields.FibonacciFinallyCount;

            using (var fibEnumerator = Yields.GetFibonacciNumbers().GetEnumerator())
            {
                for (int i = 0; i < 10; ++i)
                {
                    fibEnumerator.MoveNext();
                }
            }

            Assert.Equal(previousFinallyCount + 1, Yields.FibonacciFinallyCount);
        }
Exemplo n.º 17
0
    /**
     *  @brief  던전 종료 이벤트, 메시지 띄우고 타이틀 씬으로
     */
    private IEnumerator ExitEvent()
    {
        while (!Input.GetKeyDown(KeyCode.E))
        {
            yield return(null);
        }

        NotifyMessageEvent.Instance.PrintMainText("포트폴리오는 여기까지 입니다.", 2);
        yield return(Yields.WaitSeconds(2f));

        NotifyMessageEvent.Instance.PrintMainText("감사합니다.", 2);
        yield return(Yields.WaitSeconds(3f));

        SceneControlManager.Instance.LoadScene("Title");
    }
Exemplo n.º 18
0
    IEnumerator PurchaseItem(string code, int count)
    {
        Future <bool> future;
        bool          result;

        future = this._itemService.PurchaseItemByCode(code, count);
        yield return(this.StartCoroutine(future.Poll()));

        if (!future.IsDone)
        {
            yield break;
        }
        result = future.Get();
        yield return(Yields.WaitForNextFrame());
        //
    }
Exemplo n.º 19
0
        public void ExecuteUsingDisposalWhenEnumeratorDisposed()
        {
            #region explicit dispose
            var previousDisposedCount = DisposableThing.DisposedCount;

            var enumerator = Yields.GetRandomNumbers().GetEnumerator();
            // make something happen
            enumerator.MoveNext();
            enumerator.MoveNext();

            enumerator.Dispose();

            Assert.Equal(previousDisposedCount + 1, DisposableThing.DisposedCount);

            #endregion

            #region
            previousDisposedCount = DisposableThing.DisposedCount;

            // using
            using (var randomEnumerator = Yields.GetRandomNumbers().GetEnumerator())
            {
                for (int i = 0; i < 10; ++i)
                {
                    randomEnumerator.MoveNext();
                    Console.WriteLine(randomEnumerator.Current);
                }
            }

            Assert.Equal(previousDisposedCount + 1, DisposableThing.DisposedCount);

            #endregion

            #region
            //previousDisposedCount = DisposableThing.DisposedCount;

            //// foreach
            //foreach (var rand in Yields.GetFibonacciNumbers())
            //{
            //    if (rand < 10000)
            //        break;
            //}

            //Assert.Equal(previousDisposedCount + 1, DisposableThing.DisposedCount);
            #endregion
        }
Exemplo n.º 20
0
    // Use this for initialization
    IEnumerator Start()
    {
        //FIrst Event : 첫번째 이벤트 카메라를 셋팅하고 게이트를 연다.
        //Event가 끝나면 Second Event 시작
        eventCamOne.SetActive(true);
        yield return(Yields.WaitSeconds(2.0f));

        psGate.Play();

        iTween.ValueTo(this.gameObject,
                       iTween.Hash("from", 0.1f, "to", 1f, "time", 1.5f,
                                   "onupdatetarget", this.gameObject,
                                   "onupdate", "UpdateGateRadius",
                                   "oncompletetarget", this.gameObject,
                                   "oncomplete", "SecondEvent",
                                   "easetype", iTween.EaseType.linear));
    }
Exemplo n.º 21
0
    private IEnumerator Start()
    {
        //몬스터가 죽으면 루틴 해제
        while (true)
        {
            if (health != null)
            {
                if (health.IsDeath)
                {
                    break;
                }
            }

            if (player.State != PlayerInfo.PlayerState.DEATH)
            {
                Attack();
            }
            yield return(Yields.WaitSeconds(timeBetweenAttacks));
        }
    }
Exemplo n.º 22
0
    private IEnumerator Shooter()
    {
        while (true)
        {
            yield return(Yields.WaitSeconds(0.5f));

            int idx   = Random.Range(1, itemList.Count);
            var rigid = Instantiate(itemList[idx], transform.position, Quaternion.identity).
                        GetComponent <Rigidbody>();

            rigid.mass = 1f;

            var pos = Vector3.zero;

            pos.x += Random.Range(-3.0f, +3.0f);
            pos.z += Random.Range(-3.0f, +3.0f);
            pos.y += 4.0f;

            rigid.AddForce(pos * 80f);
        }
    }
Exemplo n.º 23
0
    /**
     *  @brief  UI를 MainCamera 방향으로 회전 하여 보여준다.
     */
    IEnumerator PrintObjInfo()
    {
        var tfCam = Camera.main.transform;
        var info  = PlayerInfo.Instance;

        while (true)
        {
            yield return(Yields.WaitSeconds(0.1f));

            var pos = info.transform.position;
            if (Vector3.Distance(transform.position, pos) > dist)
            {
                infoText.gameObject.SetActive(false);
                continue;
            }

            infoText.gameObject.SetActive(true);
            transform.LookAt(tfCam.position);
            var euler = transform.localEulerAngles;
            transform.localRotation = Quaternion.Euler(0, euler.y, 0);
        }
    }
Exemplo n.º 24
0
    /**
     *  @brief  Start Room7 Event
     *  @detail First Event     : 주변 오브젝트를 붕괴시키고 플레이어를 복셀화
     *          Second Event    : 바닥 흔들림
     *          Third Event     : 바닥 붕괴 및 플레이어 낙하에 따른 카메라 이벤트
     */
    IEnumerator PlayRoom7Event()
    {
        //=================== Start First Event =======================//
        //Play Release Particle and Disable Object
        ps.Play();
        foreach (var obj in disableObjects)
        {
            obj.SetActive(false);
        }

        //disable Trigger
        trigger.enabled = false;

        //Rebuild Player
        PlayerAnimation.Instance.Reconstruction();

        yield return(Yields.WaitSeconds(4f));

        //=================== End Firset Event =======================//

        //=================== Start Second Event =======================//
        //Shake Floor
        float t = 0f;

        while (t < 6f)
        {
            t += Time.deltaTime;
            foreach (var rigid in floorObject)
            {
                var height = scaleModifier * Mathf.PerlinNoise(Time.time + rigid.position.x * scale,
                                                               Time.time + rigid.position.z * scale);
                Vector3 pos = rigid.transform.position;
                pos.y = height + offsetHeight;
                rigid.transform.position = pos;
            }

            yield return(new WaitForEndOfFrame());
        }
        //=================== End SecondEvent =======================//

        //=================== Start ThirtEvent =======================//
        //Destory Floor
        foreach (var rigid in floorObject)
        {
            rigid.isKinematic = false;
            rigid.useGravity  = true;
        }
        PlayerInfo.Instance.Anim.Play("Fall_Second");

        eventCamFirst.SetActive(true);
        yield return(Yields.WaitSeconds(2.5f));

        PlayerInfo.Instance.Rigid.isKinematic = true;
        PlayerInfo.Instance.IsLock            = true;

        yield return(Yields.WaitSeconds(1.0f));

        eventCamSecond.SetActive(true);
        yield return(Yields.WaitSeconds(1.0f));

        yield return(ParticleManager.Reverse(cubeParticle, 1f));

        cubeObj.SetActive(true);
        yield return(Yields.WaitSeconds(0.5f));

        cubeObj.SetActive(false);
        yield return(ParticleManager.Play(cubeParticle));

        eventCamThird.SetActive(true);
        gateObj.SetActive(true);

        iTween.MoveAdd(gateObj, iTween.Hash("z", 1, "time", 3, "easetype", iTween.EaseType.linear));
        yield return(Yields.WaitSeconds(2.5f));

        //=================== End ThirtEvent =======================//

        SceneControlManager.Instance.NextScene();
    }
Exemplo n.º 25
0
 /**
     @brief  text ui disable
     @param  hitText : text ui,  time : waiting time
 */
 IEnumerator DisableHitText(GameObject hitText, float time)
 {
     yield return Yields.WaitSeconds(time);
     hitText.SetActive(false);
 }
Exemplo n.º 26
0
 public YieldsTests()
 {
     _object = new Yields();
 }