private void OnBiomeMaskDelete(PolygonBiomeMask maskArea) { // ReSharper disable once DelegateSubtraction maskArea.OnMaskDeleteDelegate -= OnBiomeMaskDelete; if (BiomeMaskList != null) { BiomeMaskList.Remove(maskArea); ClearCache(); } }
public static void AddBiomeMask(PolygonBiomeMask maskArea) { if (!Instance) { FindInstance(); } if (Instance) { Instance.Instance_AddBiomeMask(maskArea); } }
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); } }
public void AddBiomeMask(PolygonBiomeMask maskArea) { if (BiomeMaskList == null) { BiomeMaskList = new List <PolygonBiomeMask>(); } BiomeMaskList.Add(maskArea); if (BiomeMaskList.Count > 1) { SortBiomeList(); } maskArea.OnMaskDeleteDelegate += OnBiomeMaskDelete; ClearCache(); }
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(); }
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(); } } }