//For adding created connections to point B of the connection public void AddConnectedRegion(MapRegion region, RegionConnection connection) { if (!connections.ContainsKey(region)) { if (!region.connections.ContainsKey(this)) { connections.Add(region,connection); } } }
public bool CreateShapeModelXLD(HObject ImageIn, object RegionDomain, string ModelName) { try { HTuple ModelOriginPos = new HTuple(); string[] strList = ModelName.Split('.'); if (strList.Length != 2) { return(false); } // Local iconic variables HObject ho_ImageReduced, ho_Regions2, ho_RegionFillUp1; HObject ho_Contours1; // Local control variables HTuple hv_Width, hv_Height, hv_ModelID, hv_Row; HTuple hv_Column, hv_Angle, hv_Score, hv_ModelPos; // Initialize local and output iconic variables HOperatorSet.GenEmptyObj(out ho_ImageReduced); HOperatorSet.GenEmptyObj(out ho_Regions2); HOperatorSet.GenEmptyObj(out ho_RegionFillUp1); HOperatorSet.GenEmptyObj(out ho_Contours1); HOperatorSet.GetImageSize(ImageIn, out hv_Width, out hv_Height); ho_ImageReduced.Dispose(); HOperatorSet.ReduceDomain(ImageIn, RegionDomain as HObject, out ho_ImageReduced); ho_Regions2.Dispose(); HOperatorSet.Threshold(ho_ImageReduced, out ho_Regions2, 204, 255); ho_RegionFillUp1.Dispose(); HOperatorSet.FillUpShape(ho_Regions2, out ho_RegionFillUp1, "area", 1, 1000); HOperatorSet.Connection(ho_RegionFillUp1, out HObject RegionConnection); HOperatorSet.SelectShape(RegionConnection, out HObject RegionSelected, "area", "and", 10000, 200000); ho_Contours1.Dispose(); HOperatorSet.GenContourRegionXld(RegionSelected, out ho_Contours1, "border"); HOperatorSet.CreateShapeModelXld(ho_Contours1, "auto", (new HTuple(0)).TupleRad(), (new HTuple(360)).TupleRad(), "auto", "auto", "ignore_local_polarity", 5, out hv_ModelID); HOperatorSet.WriteShapeModel(hv_ModelID, "LdsShapeModel.shm"); HOperatorSet.FindShapeModel(ImageIn, hv_ModelID, (new HTuple(0)).TupleRad(), (new HTuple(360)).TupleRad(), 0.5, 1, 0.5, "least_squares", 0, 0.9, out hv_Row, out hv_Column, out hv_Angle, out hv_Score); hv_ModelPos = new HTuple(); hv_ModelPos[0] = hv_Row; hv_ModelPos[1] = hv_Column; hv_ModelPos[2] = hv_Angle; //创建的模板保存起来 HOperatorSet.WriteShapeModel(hv_ModelID, $"{strList[0]}.shm"); HOperatorSet.WriteTuple(hv_ModelPos, $"{strList[0]}.tup"); (RegionDomain as HObject).Dispose(); ho_ImageReduced.Dispose(); ho_Regions2.Dispose(); ho_RegionFillUp1.Dispose(); ho_Contours1.Dispose(); RegionConnection.Dispose(); RegionSelected.Dispose(); return(true); } catch (Exception ex) { return(false); } }
//For creating connections in MapManager mapgen public void AddConnectedRegion(MapRegion region, bool intercity, int moveCost) { //Create graphic VectorUI newVectorUI=Instantiate(roadLinePrefab); List<Vector2> roadPoints=new List<Vector2>(); roadPoints.Add(transform.position); roadPoints.Add(region.transform.position); //Visually differentiate inter-town connections and inner town connections float connectionThickness=0; Color connectionColor=Color.cyan; //Intertown - black, thinner if (intercity) {connectionThickness=8f; connectionColor=Color.black;} else {connectionThickness=16f; connectionColor=Color.gray;} //Innner town - gray, thicker newVectorUI.AssignVectorLine("Road Line",transform.parent,false,roadPoints,connectionThickness,connectionColor); //Create connection RegionConnection newConnection=new RegionConnection(newVectorUI,moveCost,intercity,this,region); region.AddConnectedRegion(this,newConnection); connections.Add(region,newConnection); }