public void AddVegetationTypes(BaseMaskArea maskArea) { for (int i = 0; i <= VegetationTypeList.Count - 1; i++) { maskArea.VegetationTypeList.Add(new VegetationTypeSettings(VegetationTypeList[i])); } }
private void OnVegetationMaskDelete(BaseMaskArea maskArea) { // ReSharper disable once DelegateSubtraction maskArea.OnMaskDeleteDelegate -= OnVegetationMaskDelete; if (VegetationMaskList != null) { VegetationMaskList.Remove(maskArea); ClearCache(); } }
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); }
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(); } } }