Exemple #1
0
        private void TryGenerate(int dir)
        {
            if (lodLevel == QTManager.Instance.activePlanet.maxLodLevel)
            {
                return;
            }
            if (dir == 0 && ((borderStatus & BorderStatus.UpBorder) == BorderStatus.UpBorder))
            {
                return;
            }
            if (dir == 1 && ((borderStatus & BorderStatus.RightBorder) == BorderStatus.RightBorder))
            {
                return;
            }
            if (dir == 2 && ((borderStatus & BorderStatus.DownBorder) == BorderStatus.DownBorder))
            {
                return;
            }
            if (dir == 3 && ((borderStatus & BorderStatus.LeftBorder) == BorderStatus.LeftBorder))
            {
                return;
            }
            Vector3 pos        = center;
            float   halfLength = length * 0.5f;

            switch (dir)
            {
            case 0:
                pos = pos + new Vector3(0f, 0f, halfLength + 0.1f);
                break;

            case 1:
                pos = pos + new Vector3(halfLength + 0.1f, 0f, 0f);
                break;

            case 2:
                pos = pos - new Vector3(0f, 0f, halfLength + 0.1f);
                break;

            case 3:
                pos = pos - new Vector3(halfLength + 0.1f, 0f, 0f);
                break;
            }

            QTNode border = FindNearest(QTManager.Instance.activeTerrain.GetRoot(), pos);

            if (border.lodLevel > this.lodLevel + 1)
            {
                border.Generate();
            }
        }
Exemple #2
0
 // Update is called once per frame
 public void Execute()
 {
     _tempNode = null;
     for (int i = 0; i < activeNodeListArray.Length; i++)
     {
         for (int m = 0; m < activeNodeListArray[i].Count; m++)
         {
             _tempNode = activeNodeListArray [i] [m];
             if (_tempNode.lodLevel > 0 && QTManager.Instance.CanGenerate(_tempNode))
             {
                 _tempNode.Generate();
             }
             else
             {
                 if (_tempNode.lodLevel < _planet.maxLodLevel && QTManager.Instance.NeedBack(_tempNode.parent))
                 {
                     _tempNode.parent.Back();
                 }
             }
         }
     }
 }