fBaseXtensions.Targeting.Clustering.UpdateGroupClusteringVariables C# (CSharp) Method

UpdateGroupClusteringVariables() private method

private UpdateGroupClusteringVariables ( ) : void
return void
        internal void UpdateGroupClusteringVariables()
        {
            //grouping clustering
            if (FunkyBaseExtension.Settings.Grouping.AttemptGroupingMovements)
            {
                if ((CurrentGroupClusters.Count == 0 && DateTime.Compare(LastClusterGroupingLogicRefresh, DateTime.Now) < 0)
                     || (CurrentGroupClusters.Count > 0 && DateTime.Now.Subtract(LastClusterGroupingLogicRefresh).TotalMilliseconds > 1250))
                {
                    //Clear Clusters and Unit collection
                    CurrentGroupClusters = new List<UnitCluster>();

                    //Check if there are enough units present currently..
                    if (FunkyGame.Targeting.Cache.Environment.DistantUnits.Count > FunkyBaseExtension.Settings.Grouping.GroupingMinimumUnitsInCluster)
                    {

                        //Update UnitCluster Collection
                        CurrentGroupClusters = UnitCluster.RunKmeans(FunkyGame.Targeting.Cache.Environment.DistantUnits, FunkyBaseExtension.Settings.Grouping.GroupingClusterRadiusDistance)
                             .Where(cluster => cluster.ListUnits.Count >= FunkyBaseExtension.Settings.Grouping.GroupingMinimumUnitsInCluster && cluster.NearestMonsterDistance <= FunkyBaseExtension.Settings.Grouping.GroupingMaximumDistanceAllowed)
                             .OrderByDescending(cluster => cluster.NearestMonsterDistance).ToList();

                        //if (FunkyBaseExtension.SettingsFunky.LogGroupingOutput)
                        //    Logger.Write(LogLevel.Cluster, "Updated Group Clusters. Count={0}", CurrentGroupClusters.Count.ToString());

                        LastClusterGroupingLogicRefresh = DateTime.Now;
                    }

                }
            }
        }