private FragmentObject CreateFragmentObject(int index0, int index1, int index2) { GameObject fragment = ResourceManager.GetInstance().GetPrefab("Prefab/Effects", "ScreenFragmentObject"); // 添加到TopEffectLayer UIManager.GetInstance().AddGoToLayer(fragment, LayerId.STGTopEffect); // 获取组件 MeshFilter meshFilter = fragment.GetComponent <MeshFilter>(); MeshRenderer meshRenderer = fragment.GetComponent <MeshRenderer>(); Mesh mesh = new Mesh(); // 设置层级 meshRenderer.sortingLayerName = "STG"; // 计算顶点 Vector3 vec0 = _vertexList[index0]; Vector3 vec1 = _vertexList[index1]; Vector3 vec2 = _vertexList[index2]; Vector3 centerPos = (vec0 + vec1 + vec2) / 3; // 设置坐标 fragment.transform.localPosition = centerPos; // 计算相对位置 vec0 -= centerPos; vec1 -= centerPos; vec2 -= centerPos; mesh.SetVertices(new List <Vector3>() { vec0, vec1, vec2 }); // 设置三角形以及计算uv mesh.triangles = new int[] { 0, 1, 2 }; mesh.uv = new Vector2[] { _uvList[index0], _uvList[index1], _uvList[index2] }; meshFilter.mesh = mesh; // 创建碎片对象 FragmentObject fragmentObject = new FragmentObject() { fragTf = fragment.transform, meshRenderer = meshRenderer, originalPos = centerPos, }; return(fragmentObject); }
private FragmentObject AddReportSting(String s) { FragmentObject.TrimatMarkEnum clr; //CircleData c_d; string[] ss = s.Split(new Char[] { ',' }); double zval; double z1val=0; double theta1; double theta2; double rad; FragmentObject fragmentMark = null; if (ss.Length >= 9) { if (ss[7].Trim() == "") ss[7] = "Not Specified"; if (ss[8].Trim() == "") ss[8] = "Not Specified"; if (ss[6].Trim() == "") ss[6] = "Not Specified"; ObjectData ob = new ObjectData(); ob.FragData = ss[0].Trim(); ob.Theta1Data = ss[1].Trim(); ob.Theta2Data = ss[2].Trim(); ob.ZData = ss[3].Trim(); ob.XData = ss[4].Trim(); ob.YData = ss[5].Trim(); ob.TypeData = ss[6].Trim(); ob.ShapeData = ss[7].Trim(); ob.SizeData = ss[8].Trim(); if(ss.Length > 9) ob.Z1Data = ss[9].Trim(); TableStrinsCollection.Add(ob); //add circles collection. will be used later ================ { zval = Convert.ToDouble(ss[3].Trim()); if (ss.Length > 9 && ss[9] != string.Empty) z1val = Convert.ToDouble(ss[9].Trim()); theta1 = Convert.ToDouble(ss[1].Trim()); theta2 = Convert.ToDouble(ss[2].Trim()); switch (ss[6].Trim()) { case "Metal": clr = FragmentObject.TrimatMarkEnum.Metal; break; case "Organic": clr = FragmentObject.TrimatMarkEnum.Organic; break; case "Inorganic": clr = FragmentObject.TrimatMarkEnum.Inorganic; break; default: clr = FragmentObject.TrimatMarkEnum.Unknown; break; } switch (ss[8].Trim()) { case "< 4 mm": rad = 4; break; case "5mm-8mm": rad = 8; break; case "9mm-12mm": rad = 12; break; case "13mm-16mm": rad = 16; break; case "17mm-20mm": rad = 20; break; case ">20mm": rad = 25; break; default: rad = m_XrayImageDisplay.DefaultMarkRadiusSizeMillimeters; break; } fragmentMark = new FragmentObject(new Point(), clr, rad, theta1, theta2, zval, z1val, FragmentObject.MarkTypeEnum.Mark); } } return fragmentMark; }
public Collection<FragmentObject> UpdateDisplay(byte[] data) { char[] delimiter = new char[2]; delimiter[0] = (char)10; delimiter[1] = (char)13; int CommentCounter1; int CommentCounter2; int charcnt; string Comments; string headerbuf; string[] split = null; String[] h_split = null; bool hflag = true; string Adornerdata = System.Text.Encoding.Default.GetString(data); Collection<FragmentObject> FragmentMarkList = new Collection<FragmentObject>(); CommentCounter1 = 0; CommentCounter2 = 0; Comments = ""; headerbuf = ""; if (Adornerdata.Length > 0) { ObservableCollection<ObjectData> TSC = TableStrinsCollection; TSC.Clear(); split = Adornerdata.Split(delimiter); if (split.Length > 0) { for (int i = 0; i < split.Length; i++) { split[i] = split[i].Trim(); } // header info=============================================================================== for (int i = 0; i < split.Length; i++) { if (split[i] != "" && hflag == true) { h_split = split[i].Split(new Char[] { '`' }); if (h_split.Length > 3) { TestNameField.Text = h_split[0].Trim(); ProjectNameField.Text = h_split[1].Trim(); MissionNameField.Text = h_split[2].Trim(); BundleField.Text = h_split[3].Trim(); hflag = false; } } if (split[i] != "" && hflag == false) { charcnt = split[i].Where(c => c == ',').Count(); if (charcnt == 9)//this is report string { FragmentObject fragmentMark = AddReportSting(split[i]); FragmentMarkList.Add(fragmentMark); } } } //========================================= find comments if any for (int i = 0; i < split.Length; i++) { if (split[i].Contains("%%%")) { CommentCounter1 = i; break; } } if (CommentCounter1 > 0) { for (int i = CommentCounter1 + 1; i < split.Length; i++) { if (split[i].Contains("%%%")) { CommentCounter2 = i; break; } } for (int i = CommentCounter1 + 1; i < CommentCounter2; i++) { if (split[i] != "" && !split[i].Contains("Annotation")) { Comments += (split[i] + "\n"); } } CommentsField.Text = Comments; } //================= find uniformity if any for (int jj = 0; jj < split.Length; jj++) { if (split[jj].Contains("Uniformity Data =")) { string[] oo = split[jj].Split(new Char[] { '=' }); if (oo.Length == 2 && oo[1] != string.Empty) { UniformityData = oo[1].Trim(); Point pt1 = new Point(); Point pt2 = new Point(); string[] sp = UniformityData.Split(new Char[] { '&' }); pt1.X = Convert.ToDouble(sp[0]); pt1.Y = Convert.ToDouble(sp[1]); pt2.X = Convert.ToDouble(sp[2]); pt2.Y = Convert.ToDouble(sp[3]); FragmentObject fragObject = new FragmentObject(pt1,FragmentObject.TrimatMarkEnum.Unknown, 0, 0, 0, 0, 0, FragmentObject.MarkTypeEnum.Uniformity); FragmentMarkList.Add(fragObject); fragObject = new FragmentObject(pt2,FragmentObject.TrimatMarkEnum.Unknown, 0, 0, 0, 0, 0, FragmentObject.MarkTypeEnum.Uniformity); FragmentMarkList.Add(fragObject); } } } } } return FragmentMarkList; }
private FragmentObject AddReportSting(String s) { FragmentObject.TrimatMarkEnum clr; //CircleData c_d; string[] ss = s.Split(new Char[] { ',' }); double zval; double z1val = 0; double theta1; double theta2; double rad; FragmentObject fragmentMark = null; if (ss.Length >= 9) { if (ss[7].Trim() == "") { ss[7] = "Not Specified"; } if (ss[8].Trim() == "") { ss[8] = "Not Specified"; } if (ss[6].Trim() == "") { ss[6] = "Not Specified"; } ObjectData ob = new ObjectData(); ob.FragData = ss[0].Trim(); ob.Theta1Data = ss[1].Trim(); ob.Theta2Data = ss[2].Trim(); ob.ZData = ss[3].Trim(); ob.XData = ss[4].Trim(); ob.YData = ss[5].Trim(); ob.TypeData = ss[6].Trim(); ob.ShapeData = ss[7].Trim(); ob.SizeData = ss[8].Trim(); if (ss.Length > 9) { ob.Z1Data = ss[9].Trim(); } TableStrinsCollection.Add(ob); //add circles collection. will be used later ================ { zval = Convert.ToDouble(ss[3].Trim()); if (ss.Length > 9 && ss[9] != string.Empty) { z1val = Convert.ToDouble(ss[9].Trim()); } theta1 = Convert.ToDouble(ss[1].Trim()); theta2 = Convert.ToDouble(ss[2].Trim()); switch (ss[6].Trim()) { case "Metal": clr = FragmentObject.TrimatMarkEnum.Metal; break; case "Organic": clr = FragmentObject.TrimatMarkEnum.Organic; break; case "Inorganic": clr = FragmentObject.TrimatMarkEnum.Inorganic; break; default: clr = FragmentObject.TrimatMarkEnum.Unknown; break; } switch (ss[8].Trim()) { case "< 4 mm": rad = 4; break; case "5mm-8mm": rad = 8; break; case "9mm-12mm": rad = 12; break; case "13mm-16mm": rad = 16; break; case "17mm-20mm": rad = 20; break; case ">20mm": rad = 25; break; default: rad = m_XrayImageDisplay.DefaultMarkRadiusSizeMillimeters; break; } fragmentMark = new FragmentObject(new Point(), clr, rad, theta1, theta2, zval, z1val, FragmentObject.MarkTypeEnum.Mark); } } return(fragmentMark); }
public Collection <FragmentObject> UpdateDisplay(byte[] data) { char[] delimiter = new char[2]; delimiter[0] = (char)10; delimiter[1] = (char)13; int CommentCounter1; int CommentCounter2; int charcnt; string Comments; string headerbuf; string[] split = null; String[] h_split = null; bool hflag = true; string Adornerdata = System.Text.Encoding.Default.GetString(data); Collection <FragmentObject> FragmentMarkList = new Collection <FragmentObject>(); CommentCounter1 = 0; CommentCounter2 = 0; Comments = ""; headerbuf = ""; if (Adornerdata.Length > 0) { ObservableCollection <ObjectData> TSC = TableStrinsCollection; TSC.Clear(); split = Adornerdata.Split(delimiter); if (split.Length > 0) { for (int i = 0; i < split.Length; i++) { split[i] = split[i].Trim(); } // header info=============================================================================== for (int i = 0; i < split.Length; i++) { if (split[i] != "" && hflag == true) { h_split = split[i].Split(new Char[] { '`' }); if (h_split.Length > 3) { TestNameField.Text = h_split[0].Trim(); ProjectNameField.Text = h_split[1].Trim(); MissionNameField.Text = h_split[2].Trim(); BundleField.Text = h_split[3].Trim(); hflag = false; } } if (split[i] != "" && hflag == false) { charcnt = split[i].Where(c => c == ',').Count(); if (charcnt == 9)//this is report string { FragmentObject fragmentMark = AddReportSting(split[i]); FragmentMarkList.Add(fragmentMark); } } } //========================================= find comments if any for (int i = 0; i < split.Length; i++) { if (split[i].Contains("%%%")) { CommentCounter1 = i; break; } } if (CommentCounter1 > 0) { for (int i = CommentCounter1 + 1; i < split.Length; i++) { if (split[i].Contains("%%%")) { CommentCounter2 = i; break; } } for (int i = CommentCounter1 + 1; i < CommentCounter2; i++) { if (split[i] != "" && !split[i].Contains("Annotation")) { Comments += (split[i] + "\n"); } } CommentsField.Text = Comments; } //================= find uniformity if any for (int jj = 0; jj < split.Length; jj++) { if (split[jj].Contains("Uniformity Data =")) { string[] oo = split[jj].Split(new Char[] { '=' }); if (oo.Length == 2 && oo[1] != string.Empty) { UniformityData = oo[1].Trim(); Point pt1 = new Point(); Point pt2 = new Point(); string[] sp = UniformityData.Split(new Char[] { '&' }); pt1.X = Convert.ToDouble(sp[0]); pt1.Y = Convert.ToDouble(sp[1]); pt2.X = Convert.ToDouble(sp[2]); pt2.Y = Convert.ToDouble(sp[3]); FragmentObject fragObject = new FragmentObject(pt1, FragmentObject.TrimatMarkEnum.Unknown, 0, 0, 0, 0, 0, FragmentObject.MarkTypeEnum.Uniformity); FragmentMarkList.Add(fragObject); fragObject = new FragmentObject(pt2, FragmentObject.TrimatMarkEnum.Unknown, 0, 0, 0, 0, 0, FragmentObject.MarkTypeEnum.Uniformity); FragmentMarkList.Add(fragObject); } } } } } return(FragmentMarkList); }
public void ChangeMarkRadiusAndTrimatType(int tableIndex, double NewRadiusInPixels, FragmentObject.TrimatMarkEnum trimatType) { m_View1FragmentAdorner.UpdateMarkRadiusAndTrimatType(tableIndex, NewRadiusInPixels, trimatType); m_View0FragmentAdorner.UpdateMarkRadiusAndTrimatType(tableIndex, NewRadiusInPixels, trimatType); }