internal BaseCluster(BaseClusteringPluginConfiguration pluginConfiguration, BaseClusterDirectory baseClusterDirectory, int instanceId, bool isGlobalCluster = false) { m_PluginConfiguration = pluginConfiguration; m_BaseClusterDirectory = baseClusterDirectory; m_Buildables = new List <Buildable>(); InstanceId = instanceId; IsGlobalCluster = isGlobalCluster; }
/// <summary> /// Creates a new instance of the BaseCluster Directory. /// </summary> /// <param name="plugin">The instance of the plugin.</param> /// <param name="pluginConfiguration">The configuration of the plugin.</param> /// <param name="buildableDirectory">The buildable directory, which should've been initialized beforehand.</param> public BaseClusterDirectory(BaseClusteringPlugin plugin, BaseClusteringPluginConfiguration pluginConfiguration, BuildableDirectory buildableDirectory) { m_Plugin = plugin; m_PluginConfiguration = pluginConfiguration; m_BuildableDirectory = buildableDirectory; m_ClusterPool = new ConcurrentBag <BaseCluster>(); m_Clusters = new List <BaseCluster>(); PatchBuildableTransforms.OnBuildableTransformed += BuildableTransformed; buildableDirectory.OnBuildablesAdded += BuildablesSpawned; buildableDirectory.OnBuildablesRemoved += BuildablesDestroyed; SaveManager.onPostSave += Save; }
/// <summary> /// Creates a new instance of the buildable directory. /// </summary> /// <param name="configuration">The plugin's configuration to utilize here.</param> public BuildableDirectory(BaseClusteringPluginConfiguration configuration) { m_BarricadeBuildables = new Dictionary <uint, BarricadeBuildable>(configuration.BuildableCapacity); m_StructureBuildables = new Dictionary <uint, StructureBuildable>(configuration.BuildableCapacity); m_BackgroundWorker = new BackgroundWorker { WorkerSupportsCancellation = true }; m_BackgroundWorker.DoWork += HandleDeferred; m_DeferredRemove = new ConcurrentQueue <Buildable>(); m_DeferredAdd = new ConcurrentQueue <Buildable>(); m_BackgroundWorkerEnd = new AutoResetEvent(false); m_BackgroundWorkerSleepTime = configuration.BackgroundWorkerSleepTime; _instance = this; StructureManager.onStructureSpawned += StructureSpawned; BarricadeManager.onBarricadeSpawned += BarricadeSpawned; PatchBuildablesDestroy.OnBuildableDestroyed += BuildableDestroyed; m_BackgroundWorker.RunWorkerAsync(); }