public void Execute()
 {
     for (int i = 0; i <= InstanceList.Length - 1; i++)
     {
         ItemSelectorInstanceInfo itemSelectorInstanceInfo = InstanceList[i];
         itemSelectorInstanceInfo.LastVisible = itemSelectorInstanceInfo.Visible;
         itemSelectorInstanceInfo.Visible     = 0;
         InstanceList[i] = itemSelectorInstanceInfo;
     }
 }
 public void Execute()
 {
     for (int i = 0; i <= InstanceList.Length - 1; i++)
     {
         ItemSelectorInstanceInfo itemSelectorInstanceInfo = InstanceList[i];
         if (itemSelectorInstanceInfo.Visible != itemSelectorInstanceInfo.LastVisible)
         {
             VisibilityChangedIndexList.Add(i);
         }
     }
 }
 public void ProcessEvents()
 {
     for (int i = 0; i <= _visibilityChangedIndexList.Length - 1; i++)
     {
         ItemSelectorInstanceInfo itemSelectorInstanceInfo = InstanceList[_visibilityChangedIndexList[i]];
         if (itemSelectorInstanceInfo.Visible == 1)
         {
             OnVegetationItemVisibleDelegate?.Invoke(itemSelectorInstanceInfo, _vegetationItemIndexes, VegetationItemID);
         }
         else
         {
             OnVegetationItemInvisibleDelegate?.Invoke(itemSelectorInstanceInfo, _vegetationItemIndexes, VegetationItemID);
         }
     }
 }
 public void Execute()
 {
     for (int j = 0; j <= InstanceList.Length - 1; j++)
     {
         ItemSelectorInstanceInfo instanceInfo = InstanceList[j];
         for (int i = 0; i <= RemoveCellIndexList.Length - 1; i++)
         {
             if (instanceInfo.VegetationCellIndex == RemoveCellIndexList[i])
             {
                 instanceInfo.Remove = 1;
                 InstanceList[j]     = instanceInfo;
                 break;
             }
         }
     }
 }
        public void Execute()
        {
            for (int i = 0; i <= InstanceList.Length - 1; i++)
            {
                ItemSelectorInstanceInfo itemSelectorInstanceInfo = InstanceList[i];
                float distance = math.distance(itemSelectorInstanceInfo.Position, CameraPosition);

                if (distance <= CullingDistance)
                {
                    itemSelectorInstanceInfo.Visible = 1;
                }
                else
                {
                    itemSelectorInstanceInfo.Visible = -1;
                }

                InstanceList[i] = itemSelectorInstanceInfo;
            }
        }
        public void Execute()
        {
            for (int i = MatrixInstanceList.Length - 1; i >= 0; i--)
            {
                MatrixInstance matrixInstance = MatrixInstanceList[i];

                ItemSelectorInstanceInfo itemSelectorInstanceInfo = new ItemSelectorInstanceInfo
                {
                    VegetationCellIndex     = VegetationCellIndex,
                    VegetationCellItemIndex = i,
                    Position    = ExtractTranslationFromMatrix(matrixInstance.Matrix),
                    Scale       = ExtractScaleFromMatrix(matrixInstance.Matrix),
                    Rotation    = ExtractRotationFromMatrix(matrixInstance.Matrix),
                    LastVisible = -1,
                    Visible     = -1
                };

                InstanceList.Add(itemSelectorInstanceInfo);
            }
        }