Exemple #1
0
 private void OnBiomeMaskDelete(PolygonBiomeMask maskArea)
 {
     // ReSharper disable once DelegateSubtraction
     maskArea.OnMaskDeleteDelegate -= OnBiomeMaskDelete;
     if (BiomeMaskList != null)
     {
         BiomeMaskList.Remove(maskArea);
         ClearCache();
     }
 }
Exemple #2
0
 public static void AddBiomeMask(PolygonBiomeMask maskArea)
 {
     if (!Instance)
     {
         FindInstance();
     }
     if (Instance)
     {
         Instance.Instance_AddBiomeMask(maskArea);
     }
 }
Exemple #3
0
        protected void Instance_AddBiomeMask(PolygonBiomeMask maskArea)
        {
            if (!_biomeMaskList.Contains(maskArea))
            {
                _biomeMaskList.Add(maskArea);
            }

            for (int i = 0; i <= VegetationSystemList.Count - 1; i++)
            {
                AddBiomeMaskToVegetationSystem(VegetationSystemList[i], maskArea);
            }
        }
Exemple #4
0
        public void AddBiomeMask(PolygonBiomeMask maskArea)
        {
            if (BiomeMaskList == null)
            {
                BiomeMaskList = new List <PolygonBiomeMask>();
            }
            BiomeMaskList.Add(maskArea);

            if (BiomeMaskList.Count > 1)
            {
                SortBiomeList();
            }

            maskArea.OnMaskDeleteDelegate += OnBiomeMaskDelete;
            ClearCache();
        }
Exemple #5
0
        protected void Instance_RemoveBiomeMask(PolygonBiomeMask maskArea)
        {
            _biomeMaskList.Remove(maskArea);
            Rect maskRect = RectExtension.CreateRectFromBounds(maskArea.MaskBounds);
            List <BillboardCell> selectedBillboardCellList = new List <BillboardCell>();

            for (int i = 0; i <= VegetationSystemList.Count - 1; i++)
            {
                VegetationSystemPro vegetationSystem = VegetationSystemList[i];
                vegetationSystem.CompleteCellLoading();

                vegetationSystem.BillboardCellQuadTree.Query(maskRect, selectedBillboardCellList);
                for (int j = 0; j <= selectedBillboardCellList.Count - 1; j++)
                {
                    selectedBillboardCellList[j].ClearCache();
                }
            }

            maskArea.CallDeleteEvent();
            maskArea.Dispose();
        }
Exemple #6
0
        private static void AddBiomeMaskToVegetationSystem(VegetationSystemPro vegetationSystem, PolygonBiomeMask maskArea)
        {
            int biomeSortOrder = vegetationSystem.GetBiomeSortOrder(maskArea.BiomeType);

            maskArea.BiomeSortOrder = biomeSortOrder;

            Rect maskRect = RectExtension.CreateRectFromBounds(maskArea.MaskBounds);

            if (vegetationSystem.VegetationCellQuadTree != null && vegetationSystem.BillboardCellQuadTree != null)
            {
                List <VegetationCell> selectedCellList = new List <VegetationCell>();
                vegetationSystem.VegetationCellQuadTree.Query(maskRect, selectedCellList);
                for (int i = 0; i <= selectedCellList.Count - 1; i++)
                {
                    selectedCellList[i].AddBiomeMask(maskArea);
                }

                List <BillboardCell> selectedBillboardCellList = new List <BillboardCell>();
                vegetationSystem.BillboardCellQuadTree.Query(maskRect, selectedBillboardCellList);
                for (int i = 0; i <= selectedBillboardCellList.Count - 1; i++)
                {
                    selectedBillboardCellList[i].ClearCache();
                }
            }
        }