86 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using AwesomeTechnologies.BillboardSystem;
 | |
| using Unity.Collections;
 | |
| using UnityEngine;
 | |
| 
 | |
| namespace AwesomeTechnologies.VegetationSystem
 | |
| {
 | |
|     public partial class VegetationSystemPro
 | |
|     {
 | |
|         private void CompactCache()
 | |
|         {
 | |
|             CompactVegetationCellCache();
 | |
|             //CompactBillboardCellCache();
 | |
|         }
 | |
| 
 | |
|         private void CompactVegetationCellCache()
 | |
|         {                       
 | |
|             for (int i = 0; i <= LoadedVegetationCellList.Count - 1; i++)
 | |
|             {
 | |
|                 VegetationCell vegetationCell = LoadedVegetationCellList[i];
 | |
|                 vegetationCell.FlagForRemoval = vegetationCell.Prepared;
 | |
|             }
 | |
| 
 | |
|             for (int i = 0; i <= VegetationStudioCameraList.Count - 1; i++)
 | |
|             {
 | |
|                 VegetationStudioCamera vegetationStudioCamera = VegetationStudioCameraList[i];
 | |
|                 if (!vegetationStudioCamera.Enabled) continue;
 | |
| 
 | |
|                 for (int j = 0; j <= vegetationStudioCamera.PotentialVisibleVegetationCellList.Count - 1; j++)
 | |
|                 {
 | |
|                     VegetationCell vegetationCell = vegetationStudioCamera.PotentialVisibleVegetationCellList[j];
 | |
|                     vegetationCell.FlagForRemoval = false;
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             PredictiveCellLoader.RemoveCellsFlaggedForRemoval();
 | |
| 
 | |
| 
 | |
|             int clearCellCounter = 0;
 | |
|             for (int i = LoadedVegetationCellList.Count - 1; i >= 0; i--)
 | |
|             {
 | |
|                 if (LoadedVegetationCellList[i].FlagForRemoval)
 | |
|                 {
 | |
|                     clearCellCounter++;
 | |
|                     LoadedVegetationCellList[i].ClearCache();
 | |
|                     OnClearCacheVegetationCellDelegate?.Invoke(this, LoadedVegetationCellList[i]);
 | |
|                     LoadedVegetationCellList.RemoveAtSwapBack(i);
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             if (clearCellCounter > 0)
 | |
|             {
 | |
|                // Debug.Log("Cleared " + clearCellCounter  + " VegetationCells");
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         void CompactBillboardCellCache()
 | |
|         {
 | |
|             // for (int i = 0; i <= BillboardCellList.Count - 1; i++)
 | |
|             // {
 | |
|             //     BillboardCell billboardCell = BillboardCellList[i];
 | |
|             //     billboardCell.FlagForRemoval = billboardCell.Prepared;
 | |
|             // }
 | |
|             //
 | |
|             // for (int i = 0; i <= VegetationStudioCameraList.Count - 1; i++)
 | |
|             // {
 | |
|             //     VegetationStudioCamera vegetationStudioCamera = VegetationStudioCameraList[i];
 | |
|             //     if (!vegetationStudioCamera.Enabled) continue;
 | |
|             //
 | |
|             //     for (int j = 0; j <= vegetationStudioCamera.PotentialVisibleBillboardCellList.Count - 1; j++)
 | |
|             //     {
 | |
|             //         BillboardCell billboardCell = vegetationStudioCamera.PotentialVisibleBillboardCellList[j];
 | |
|             //         billboardCell.FlagForRemoval = false;
 | |
|             //     }
 | |
|             // }
 | |
|             //
 | |
|             // for (int i = BillboardCellList.Count - 1; i >= 0; i--)
 | |
|             // {
 | |
|             //     if (BillboardCellList[i].FlagForRemoval)
 | |
|             //     {
 | |
|             //         BillboardCellList[i].Dispose();
 | |
|             //     }
 | |
|             // }
 | |
|         }
 | |
|     }
 | |
| }
 | 
