コード例 #1
0
    public IEnumerator GenerateHeightMap(
        int width,
        int height,
        float xOffset,
        float yOffset,
        TerrainParameter para,
        IReturn <float[]> ret)
    {
        _width   = width;
        _height  = height;
        _xOffset = xOffset;
        _yOffset = yOffset;
        _para    = para;

        _heightMap = new float[_width * _height];

        var genLocalMonad = new BlockMonad <float[]>(r =>
                                                     _randPointGen.GenerateRandomLocalAreaMap(
                                                         width, height, _para.RANDOM_POINT_GEN_PARA, r));

        yield return(genLocalMonad.Do());

        if (genLocalMonad.Error != null)
        {
            ret.Fail(genLocalMonad.Error);
            yield break;
        }
        _localAreaMap = genLocalMonad.Result;

        yield return(_GenerateHeightMap());

        ret.Accept(_heightMap);
    }
コード例 #2
0
ファイル: TestMonad.cs プロジェクト: rayark/mast
 void _MonadCompletionSourceTestTask2(IReturn <int> r)
 {
     ThreadPool.QueueUserWorkItem(state =>
     {
         Thread.Sleep(500);
         r.Fail(new ArgumentException());
     });
 }
コード例 #3
0
ファイル: TestMonad.cs プロジェクト: rayark/mast
        IEnumerator TestTask2(IReturn <string> ret)
        {
            yield return(null);

            yield return(null);

            ret.Fail(new System.Exception("error 2"));
        }
コード例 #4
0
ファイル: TestMonad.cs プロジェクト: rayark/mast
        public IEnumerator TestTask6(string failMsg, int iter, IReturn <int> ret)
        {
            for (int i = 0; i < iter; ++i)
            {
                yield return(null);
            }

            ret.Fail(new System.Exception(failMsg));
        }
コード例 #5
0
    public IEnumerator ChangeToNextWeather(IReturn <float[]> ret)
    {
        if (_para == null || _weatherMap == null)
        {
            ret.Fail(new System.Exception("Need Initial / Need Parameter"));
            yield break;
        }

        NextRandom();
        yield return(_GenerateWeatherMap());

        ret.Accept(_weatherMap);
    }
コード例 #6
0
ファイル: TestMonad.cs プロジェクト: rayark/mast
        IEnumerator _FirstCompletedTestTask3(IReturn <int> ret)
        {
            yield return(null);

            ret.Fail(new System.Exception("3"));
        }