private void OnGetLinePositionSetInSpecificLevel(ILevel level, int levelSequence, IPositionSet positionSet) { lock (layers) { if (linePartSetLayer == null) { linePartSetLayer = new Layer_M2MPartSetInSpecificLevel(level, positionSet); linePartSetLayer.MainColor = Settings.Default.LinePositionSetInSpecificLevelColor; linePartSetLayer.Alpha = 50; //linePartSetLayer.LineColor = Color.Red; linePartSetLayer.Active = true; layers.Add(linePartSetLayer); positionSetSet = new PositionSetSet(); BottonLevelPositionSetLayer = new Layer_PositionSet_Point(positionSetSet); BottonLevelPositionSetLayer.Point.IsDrawPointBorder = true; BottonLevelPositionSetLayer.Point.PointRadius = 2; BottonLevelPositionSetLayer.Point.PointColor = Settings.Default.BottonLevelPositionSetColor; layers.Add(BottonLevelPositionSetLayer); } else { linePartSetLayer.SpringLayerRepresentationChangedEvent(linePartSetLayer); } positionSetSet.Clear(); positionSet.InitToTraverseSet(); while (positionSet.NextPosition()) { IPart tempPart = level.GetPartRefByPartIndex((int)positionSet.GetPosition().GetX(), (int)positionSet.GetPosition().GetY()); if (tempPart != null) { positionSetSet.AddPositionSet(m2mStructure.GetBottonLevelPositionSetByAncestorPart(( tempPart), levelSequence)); } } BottonLevelPositionSetLayer.SpringLayerRepresentationChangedEvent(BottonLevelPositionSetLayer); } flowControlerForm.BeginInvoke(Update); flowControlerForm.SuspendAndRecordWorkerThread(); }
public AlgorithmDemo_M2M_CD(M2M_CD M2M_CD, Layers layers, FlowControlerForm flowControlerForm, dUpdate update) { this.M2M_CD = M2M_CD; this.layers = layers; this.flowControlerForm = flowControlerForm; this.Update = update; M2M_CD.GetCollision += delegate(IPositionSet positionSet) { System.Diagnostics.Debug.WriteLine("Collision!"); if (objLayer != null) { layers.Remove(objLayer); } { objLayer = new Layer_PositionSet_Polygon(new PositionSet_Cloned(positionSet)); objLayer.PolygonLine.LineColor = Color.Red; objLayer.PolygonLine.LineWidth = 1; layers.Add(objLayer); } flowControlerForm.BeginInvoke(Update); flowControlerForm.SuspendAndRecordWorkerThread(); }; M2M_CD.GetNoCollision += delegate(IPositionSet positionSet) { System.Diagnostics.Debug.WriteLine("NoCollision!"); if (objLayer != null) { layers.Remove(objLayer); } { objLayer = new Layer_PositionSet_Polygon(new PositionSet_Cloned(positionSet)); objLayer.PolygonLine.LineColor = Color.Green; objLayer.PolygonLine.LineWidth = 1; layers.Add(objLayer); } flowControlerForm.BeginInvoke(Update); flowControlerForm.SuspendAndRecordWorkerThread(); }; M2M_CD.GetIntersectPart += delegate(ILevel level, IPositionSet positionSet) { if (linePartSetLayer == null) { linePartSetLayer = new Layer_M2MPartSetInSpecificLevel(level, positionSet); linePartSetLayer.MainColor = Settings.Default.LinePositionSetInSpecificLevelColor; linePartSetLayer.Alpha = 50; //linePartSetLayer.LineColor = Color.Red; linePartSetLayer.Active = true; layers.Add(linePartSetLayer); } else { linePartSetLayer.SpringLayerRepresentationChangedEvent(linePartSetLayer); } }; M2M_CD.GetM2MStructure += delegate(IM2MStructure m2mStructure) { this.m2mStructure = m2mStructure; }; IsGetM2MStructure = true; IsGetPositionSetToGetConvexHull = true; flowControlerForm.SelectConfiguratoinObject(this); flowControlerForm.SuspendAndRecordWorkerThread(); }