public void AddVegetationItemInstanceEx(string vegetationItemID, Vector3 position, Vector3 scale, Quaternion rotation, byte vegetationSourceID, float minimumDistance, float distanceFalloff)
        {
            PersistentVegetationInfo persistentVegetationInfo = GetPersistentVegetationInfo(vegetationItemID);

            if (persistentVegetationInfo == null)
            {
                persistentVegetationInfo = new PersistentVegetationInfo {
                    VegetationItemID = vegetationItemID
                };
                PersistentVegetationInfoList.Add(persistentVegetationInfo);
            }

            float closestDistance = CalculateClosestItemDistance(position, persistentVegetationInfo.VegetationItemList);

            if (closestDistance < minimumDistance)
            {
                return;
            }

            PersistentVegetationItem persistentVegetationItem = new PersistentVegetationItem
            {
                Position           = position,
                Rotation           = rotation,
                Scale              = scale,
                VegetationSourceID = vegetationSourceID,
                DistanceFalloff    = distanceFalloff
            };

            persistentVegetationInfo.AddPersistentVegetationItemInstance(ref persistentVegetationItem);
        }
 public void UpdatePersistentVegetationItemInstanceSourceId(ref PersistentVegetationItem persistentVegetationItem, byte newSourceID)
 {
     if (persistentVegetationItem.VegetationSourceID != newSourceID)
     {
         DecreaseSourceCount(persistentVegetationItem.VegetationSourceID);
         persistentVegetationItem.VegetationSourceID = newSourceID;
         IncreaseSourceCount(persistentVegetationItem.VegetationSourceID);
     }
 }
        public void AddVegetationItemInstance(string vegetationItemID, Vector3 position, Vector3 scale, Quaternion rotation, byte vegetationSourceID, float distanceFalloff)
        {
            PersistentVegetationInfo persistentVegetationInfo = GetPersistentVegetationInfo(vegetationItemID);

            if (persistentVegetationInfo == null)
            {
                persistentVegetationInfo = new PersistentVegetationInfo {
                    VegetationItemID = vegetationItemID
                };
                PersistentVegetationInfoList.Add(persistentVegetationInfo);
            }

            PersistentVegetationItem persistentVegetationItem = new PersistentVegetationItem
            {
                Position           = position,
                Rotation           = rotation,
                Scale              = scale,
                VegetationSourceID = vegetationSourceID,
                DistanceFalloff    = distanceFalloff
            };

            persistentVegetationInfo.AddPersistentVegetationItemInstance(ref persistentVegetationItem);
        }
 public void AddPersistentVegetationItemInstance(ref PersistentVegetationItem persistentVegetationItem)
 {
     IncreaseSourceCount(persistentVegetationItem.VegetationSourceID);
     VegetationItemList.Add(persistentVegetationItem);
 }
 public void RemovePersistentVegetationItemInstance(ref PersistentVegetationItem persistentVegetationItem)
 {
     DecreaseSourceCount(persistentVegetationItem.VegetationSourceID);
     VegetationItemList.Remove(persistentVegetationItem);
 }