コード例 #1
0
    IEnumerator PropsUpdater()
    {
        yield return(null);

        //int step = 0;
        int count = PropsInfo.AllPropsTypes.Count;
        int i     = 0;

        PropsInfo.PropTypeGroup Ptg = null;
        Vector3 LocalPos            = Vector3.zero;
        float   Realtime            = Time.realtimeSinceStartup;

        //Debug.LogWarning("Start updating props: " + count);

        for (i = 0; i < count; i++)
        {
            Ptg = PropsInfo.AllPropsTypes[i];
            var listEnum = Ptg.PropsInstances.GetEnumerator();
            while (listEnum.MoveNext())
            {
                LocalPos   = listEnum.Current.Obj.Tr.localPosition;
                LocalPos.y = ScmapEditor.Current.Teren.SampleHeight(LocalPos);
                listEnum.Current.Obj.Tr.localPosition = LocalPos;
                //step++;

                if (Time.realtimeSinceStartup - Realtime > MaxAllowedOverhead)
                {
                    //Debug.Log(step + "\n" + Time.realtimeSinceStartup + " : " + Realtime + "\n" + (Time.realtimeSinceStartup - Realtime).ToString("0.0000"));
                    yield return(null);

                    Realtime = Time.realtimeSinceStartup;
                }

                /*if (step > PauseEvery)
                 * {
                 *      step = 0;
                 *      yield return null;
                 * }*/
            }
            listEnum.Dispose();
        }

        yield return(null);

        UpdateProcess = null;

        if (BufforUpdate)
        {
            BufforUpdate = false;
            UpdatePropsHeights();
        }
    }
コード例 #2
0
    IEnumerator PropsUpdater()
    {
        yield return(null);

        int step  = 0;
        int count = PropsInfo.AllPropsTypes.Count;
        int i     = 0;

        PropsInfo.PropTypeGroup Ptg = null;
        Vector3 LocalPos            = Vector3.zero;

        for (i = 0; i < count; i++)
        {
            Ptg = PropsInfo.AllPropsTypes[i];
            foreach (Prop PropInstance in Ptg.PropsInstances)
            {
                LocalPos   = PropInstance.Obj.Tr.localPosition;
                LocalPos.y = ScmapEditor.Current.Teren.SampleHeight(LocalPos);
                PropInstance.Obj.Tr.localPosition = LocalPos;

                step++;
                if (step > PauseEvery)
                {
                    step = 0;
                    yield return(null);
                }
            }
        }

        yield return(null);

        UpdateProcess = null;

        if (BufforUpdate)
        {
            BufforUpdate = false;
            UpdatePropsHeights();
        }
    }