Пример #1
0
 public void AddVegetationTypes(BaseMaskArea maskArea)
 {
     for (int i = 0; i <= VegetationTypeList.Count - 1; i++)
     {
         maskArea.VegetationTypeList.Add(new VegetationTypeSettings(VegetationTypeList[i]));
     }
 }
Пример #2
0
 private void OnVegetationMaskDelete(BaseMaskArea maskArea)
 {
     // ReSharper disable once DelegateSubtraction
     maskArea.OnMaskDeleteDelegate -= OnVegetationMaskDelete;
     if (VegetationMaskList != null)
     {
         VegetationMaskList.Remove(maskArea);
         ClearCache();
     }
 }
Пример #3
0
        public void AddVegetationMask(BaseMaskArea maskArea, int vegetationPackageIndex, int vegetationItemIndex)
        {
            if (VegetationMaskList == null)
            {
                VegetationMaskList = new List <BaseMaskArea>();
            }
            VegetationMaskList.Add(maskArea);

            maskArea.OnMaskDeleteDelegate += OnVegetationMaskDelete;
            ClearCache(vegetationPackageIndex, vegetationItemIndex, true);
        }
Пример #4
0
        public void AddVegetationMask(BaseMaskArea maskArea)
        {
            if (VegetationMaskList == null)
            {
                VegetationMaskList = new List <BaseMaskArea>();
            }
            VegetationMaskList.Add(maskArea);

            maskArea.OnMaskDeleteDelegate += OnVegetationMaskDelete;
            ClearCache();
        }
 public static void RemoveVegetationMask(BaseMaskArea maskArea)
 {
     if (!Instance)
     {
         FindInstance();
     }
     if (Instance)
     {
         Instance.Instance_RemoveVegetationMask(maskArea);
     }
 }
        public void Instance_AddVegetationMask(BaseMaskArea maskArea)
        {
            if (!_vegetationMaskList.Contains(maskArea))
            {
                _vegetationMaskList.Add(maskArea);
            }

            for (int i = 0; i <= VegetationSystemList.Count - 1; i++)
            {
                AddVegetationMaskToVegetationSystem(VegetationSystemList[i], maskArea);
            }
        }
        public void Instance_RemoveVegetationMask(BaseMaskArea maskArea)
        {
            _vegetationMaskList.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();
        }
        private static void AddVegetationMaskToVegetationSystem(VegetationSystemPro vegetationSystem, BaseMaskArea maskArea)
        {
            vegetationSystem.CompleteCellLoading();

            VegetationItemIndexes vegetationItemIndexes = new VegetationItemIndexes();

            if (maskArea.VegetationItemID != "")
            {
                vegetationItemIndexes = vegetationSystem.GetVegetationItemIndexes(maskArea.VegetationItemID);
            }
            else
            {
                vegetationItemIndexes.VegetationPackageIndex = -1;
                vegetationItemIndexes.VegetationItemIndex    = -1;
            }

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

            if (vegetationSystem.VegetationCellQuadTree == null ||
                vegetationSystem.BillboardCellQuadTree == null)
            {
                return;
            }

            List <VegetationCell> selectedCellList = new List <VegetationCell>();

            vegetationSystem.VegetationCellQuadTree.Query(maskRect, selectedCellList);

            if (vegetationItemIndexes.VegetationPackageIndex > -1)
            {
                for (int i = 0; i <= selectedCellList.Count - 1; i++)
                {
                    selectedCellList[i]
                    .AddVegetationMask(
                        maskArea, vegetationItemIndexes.VegetationPackageIndex, vegetationItemIndexes.VegetationItemIndex);
                }

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

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