public void SetParentLayer(RelevantObjectLayer layer) { foreach (var relevantObject in Values.SelectMany(list => list)) { relevantObject.Layer = layer; } }
public LayerCollection(RelevantObjectsGeneratorCollection generators, double acceptableDifference) { ObjectLayers = new List <RelevantObjectLayer>(); AllGenerators = generators; AcceptableDifference = acceptableDifference; LockedLayer = new RelevantObjectLayer(this, null); // Generate 1 layer ObjectLayers.Add(new RelevantObjectLayer(this, AllGenerators)); // Set the previous layer of the rootlayer to the locked layer so every layer has the locked layer GetRootLayer().PreviousLayer = LockedLayer; LockedLayer.NextLayer = GetRootLayer(); }
public void SetInceptionLevel(int inceptionLevel) { if (inceptionLevel < 0) { throw new ArgumentException("Inception level can't be less than 0."); } if (ObjectLayers.Count < inceptionLevel) { // Add more layers var layersToAdd = inceptionLevel - ObjectLayers.Count; for (var i = 0; i < layersToAdd; i++) { var lastLayer = ObjectLayers.LastOrDefault(); var newLayer = new RelevantObjectLayer(this, AllGenerators) { PreviousLayer = lastLayer }; if (lastLayer != null) { lastLayer.NextLayer = newLayer; } ObjectLayers.Add(newLayer); // Derive new relevant objects in the new layer newLayer.GenerateNewObjects(); } } else if (ObjectLayers.Count > inceptionLevel) { // Remove layers var layersToRemove = ObjectLayers.Count - inceptionLevel; for (var i = 0; i < layersToRemove; i++) { // Dispose all objects from last layer ObjectLayers[ObjectLayers.Count - 1].Clear(); ObjectLayers.RemoveAt(ObjectLayers.Count - 1); var lastLayer = ObjectLayers.LastOrDefault(); if (lastLayer != null) { lastLayer.NextLayer = null; } } } }