Beispiel #1
0
        /// <summary>
        /// Update relative drawings. Calculates new position for each scene drawing based on its origin point.
        /// </summary>
        private void UpdateRelativeDrawings()
        {
            var keysToRemove = new List <string>();

            foreach (var drawing in Drawings.Relative)
            {
                if (drawing.Value.WorldId != AdvDia.CurrentWorldDynamicId)
                {
                    keysToRemove.Add(drawing.Key);
                    continue;
                }

                DrawingUtilities.RelativeMove(drawing.Value.Drawing, drawing.Value.Origin.WorldVector);
            }

            RelativeDrawing removedItem;

            foreach (var key in keysToRemove)
            {
                Drawings.Relative.TryRemove(key, out removedItem);
            }

            if (Drawings.Relative.Count > RelativeGeometryStorageLimit)
            {
                var firstKey = Drawings.Relative.Keys.First();
                Drawings.Relative.TryRemove(firstKey, out removedItem);
            }
        }