public TransportTaskDirectionModel(TransportTask transportTask, Func <string, List <PlaceModel> > findPlaceAccessor) { _findPlaceAccessor = findPlaceAccessor; Source = transportTask; _startPlaceModel = _findPlaceAccessor(Source.TaskStartPlaceCode).FirstOrDefault(); _finishPlaceModel = _findPlaceAccessor(Source.TaskFinishPlace).FirstOrDefault(); if (_startPlaceModel == null || _finishPlaceModel == null) { IsValid = false; return; } IsValid = true; this.Point1 = _startPlaceModel.Center; this.Point2 = _finishPlaceModel.Center; this.Diameter = 0.05; switch (Source.StatusCode) { case TTaskStates.TTASK_CREATED: Fill = CreatedBrushForArrow; break; case TTaskStates.TTASK_ACTIVATED: Fill = ActivatedBrushForArrow; break; case TTaskStates.TTASK_COMPLETED: Fill = CompletedBrushForArrow; break; default: Fill = DefaultBrushForArrow; break; } if (Fill.IsFrozen) { var myFill = Fill.Clone(); myFill.Opacity = 0.7; Fill = myFill; } else { Fill.Opacity = 0.7; } }
protected override void CreateModel() { foreach (var place in _places) { var placeModel = new PlaceModel(place); placeModel.Transform = new TranslateTransform3D(ScaleValue(place.PosX * 10) + SegmentPadding, SegmentPadding, ScaleValue(place.PosY * 10) + SegmentHeight); Children.Add(placeModel); } var bounds = Children.FindBounds(); Length = bounds.SizeX + SegmentPadding * 2; Width = bounds.SizeY + SegmentPadding * 2; Height = SegmentHeight; Center = new Point3D(Length / 2, Width / 2, Height / 2); }