private void PersistList(object state) { List <DownloadItem> downloadsToSave = new List <DownloadItem>(); using (DownloadManager.Instance.LockDownloadList(false)) { //IList<Downloader> downloads = DownloadManager.Instance.Downloads; //for (int i = 0; i < downloads.Count; i++) foreach (Downloader downloader in DownloadManager.Instance.OrderedDownloads) { //if (downloads[i].State == DownloaderState.Ended) if (downloader.State == DownloaderState.Ended) { continue; } //Downloader downloader = downloads[i]; DownloadItem di = new DownloadItem(); di.id = downloader.Id; di.LocalFile = downloader.LocalFile; di.rl = downloader.ResourceLocation; di.mirrors = downloader.Mirrors.ToArray(); di.remoteInfo = downloader.RemoteFileInfo; di.requestedSegments = downloader.RequestedSegments; di.createdDateTime = downloader.CreatedDateTime; di.extendedProperties = new SerializableDictionary <string, object>(downloader.ExtendedProperties); using (downloader.LockSegments()) { di.Segments = new SegmentItem[downloader.Segments.Count]; for (int j = 0; j < downloader.Segments.Count; j++) { SegmentItem si = new SegmentItem(); Segment seg = downloader.Segments[j]; si.Index = seg.Index; si.InitialStartPositon = seg.InitialStartPosition; si.StartPositon = seg.StartPosition; si.EndPosition = seg.EndPosition; di.Segments[j] = si; } } downloadsToSave.Add(di); } } DownloadParameters downloadParameters = new DownloadParameters(); downloadParameters.defaultDownloadDirectory = DownloadManager.Instance.DefaultDownloadDirectorySource; downloadParameters.lastDownloadId = DownloadManager.Instance.LastDownloadId; downloadParameters.downloadItems = downloadsToSave.ToArray(); //SaveObjects(downloadsToSave); SaveObjects(downloadParameters); }
public ResultCross(CadVertex wp, double dist, SegmentItem seg0, SegmentItem seg1) : base(wp, dist) { WoldPoint = wp; Dist = dist; Seg0 = seg0; Seg1 = seg1; }
private Vector3d CrossLineScr(SegmentItem seg0, SegmentItem seg1) { return(CadMath.CrossLine2D( seg0.ScrSegment.P0.vector, seg0.ScrSegment.P1.vector, seg1.ScrSegment.P0.vector, seg1.ScrSegment.P1.vector)); }
private bool CheckCrossSegSegScr(SegmentItem seg0, SegmentItem seg1) { return(CadMath.CheckCrossSegSeg2D( seg0.ScrSegment.P0.vector, seg0.ScrSegment.P1.vector, seg1.ScrSegment.P0.vector, seg1.ScrSegment.P1.vector)); }
// public void SegmentCellDidClick(SegmentCell cell,SegmentCellItem item) // { // if (_delegate != null) // { // print("onItemClick 2"); // _delegate.SegmentDidClick(this,item); // } // } public void SegmentItemDidClick(SegmentItem item) { if (item == null) { return; } Select(item.index); if (_delegate != null) { _delegate.SegmentDidClick(this, item); } }
private void PersistList(object state) { List <DownloadItem> downloadsToSave = new List <DownloadItem>(); using (DownloadManager.Instance.LockDownloadList(false)) { IList <Downloader> downloads = DownloadManager.Instance.Downloads; for (int i = 0; i < downloads.Count; i++) { // don't save ended downloads /* if (downloads[i].State == DownloaderState.Ended) * { * continue; * } */ Downloader downloader = downloads[i]; DownloadItem di = new DownloadItem(); di.LocalFile = downloader.LocalFile; di.rl = downloader.ResourceLocation; di.mirrors = downloader.Mirrors.ToArray(); di.remoteInfo = downloader.RemoteFileInfo; di.requestedSegments = downloader.RequestedSegments; di.createdDateTime = downloader.CreatedDateTime; di.extendedProperties = new SerializableDictionary <string, object>(downloader.ExtendedProperties); using (downloader.LockSegments()) { di.Segments = new SegmentItem[downloader.Segments.Count]; for (int j = 0; j < downloader.Segments.Count; j++) { SegmentItem si = new SegmentItem(); Segment seg = downloader.Segments[j]; si.Index = seg.Index; si.InitialStartPositon = seg.InitialStartPosition; si.StartPositon = seg.StartPosition; si.EndPosition = seg.EndPosition; di.Segments[j] = si; } } downloadsToSave.Add(di); } } SaveObjects(downloadsToSave); }
public SegmentItem GetItem(int idx) { SegmentItem item_ret = null; foreach (SegmentItem item in listItem) { if (idx == item.index) { item_ret = item; break; } } return(item_ret); }
private void PersistList(object state) { var downloadsToSave = new List <DownloadItem>(); using (DownloadManager.Instance.LockDownloadList(false)) { IList <Downloader> downloads = DownloadManager.Instance.Downloads; foreach (var download in downloads) { if (download.State == DownloaderState.Ended) { continue; } DownloadItem di = new DownloadItem { LocalFile = download.LocalFile, rl = download.ResourceLocation, mirrors = download.Mirrors.ToArray(), remoteInfo = download.RemoteFileInfo, requestedSegments = download.RequestedSegments, createdDateTime = download.CreatedDateTime, extendedProperties = new SerializableDictionary <string, object>(download.ExtendedProperties) }; using (download.LockSegments()) { di.Segments = new SegmentItem[download.Segments.Count]; for (int j = 0; j < download.Segments.Count; j++) { SegmentItem si = new SegmentItem(); Segment seg = download.Segments[j]; si.Index = seg.Index; si.InitialStartPositon = seg.InitialStartPosition; si.StartPositon = seg.StartPosition; si.EndPosition = seg.EndPosition; di.Segments[j] = si; } } downloadsToSave.Add(di); } } SaveObjects(downloadsToSave); }
public void AddItem(ItemInfo info) { if (listItem == null) { listItem = new List <SegmentItem>(); //return; } if (listItem.Count == 0) { totalStringWidth = 0; } if (scrollRect == null) { scrollRect = GetComponent <ScrollRect>(); } //横向滑动 int space_x = 10; SegmentItem item = (SegmentItem)GameObject.Instantiate(segmentItem); item.iDelegate = this; item.index = listItem.Count; listItem.Add(item); item.transform.parent = objContent.transform; item.colorSel = colorSel; item.colorUnSel = colorUnSel; item.textTitle.fontSize = itemFontSize; item.UpdateInfo(info); int str_width = Common.GetStringLength(info.title, AppString.STR_FONT_NAME, itemFontSize); int offsetx = space_x * listItem.Count + totalStringWidth; totalStringWidth += str_width; RectTransform rctranContent = objContent.transform as RectTransform; float left_x = -rctranContent.rect.width / 2; RectTransform rctran = item.transform as RectTransform; rctran.sizeDelta = new Vector2(str_width, rctranContent.rect.height); float x = left_x + offsetx + rctran.sizeDelta.x / 2; Vector2 pos = new Vector2(x, 0); //item.transform.position = pos; rctran.localScale = new Vector3(1f, 1f, 1f); //rctran.anchoredPosition = pos; //scrollRect.content.sizeDelta = new Vector2(space_x*listItem.Count+totalStringWidth,scrollRect.content.sizeDelta.y); }
private void CheckCross() { int i = 0; for (; i < SegList.Count; i++) { SegmentItem seg0 = SegList[i]; int j = i + 1; for (; j < SegList.Count; j++) { SegmentItem seg1 = SegList[j]; if (!CheckCrossSegSegScr(seg0, seg1)) { continue; } Vector3d cv = CrossLineScr(seg0, seg1); if (cv.IsInvalid()) { continue; } CadVertex dv = cv - TargetPoint; double dist = dv.Norm2D(); if (dist > Range) { continue; } if (IsSegVertex(cv, seg0) || IsSegVertex(cv, seg1)) { continue; } Result res = new ResultCross(new CadVertex(DC.DevPointToWorldPoint(cv)), dist, seg0, seg1); ResultList.Add(res); } } }
private void PersistList(object state) { List<DownloadItem> downloadsToSave = new List<DownloadItem>(); using (DownloadManager.Instance.LockDownloadList(false)) { //IList<Downloader> downloads = DownloadManager.Instance.Downloads; //for (int i = 0; i < downloads.Count; i++) foreach (Downloader downloader in DownloadManager.Instance.OrderedDownloads) { //if (downloads[i].State == DownloaderState.Ended) if (downloader.State == DownloaderState.Ended) { continue; } //Downloader downloader = downloads[i]; DownloadItem di = new DownloadItem(); di.id = downloader.Id; di.LocalFile = downloader.LocalFile; di.rl = downloader.ResourceLocation; di.mirrors = downloader.Mirrors.ToArray(); di.remoteInfo = downloader.RemoteFileInfo; di.requestedSegments = downloader.RequestedSegments; di.createdDateTime = downloader.CreatedDateTime; di.extendedProperties = new SerializableDictionary<string,object>(downloader.ExtendedProperties); using (downloader.LockSegments()) { di.Segments = new SegmentItem[downloader.Segments.Count]; for (int j = 0; j < downloader.Segments.Count; j++) { SegmentItem si = new SegmentItem(); Segment seg = downloader.Segments[j]; si.Index = seg.Index; si.InitialStartPositon = seg.InitialStartPosition; si.StartPositon = seg.StartPosition; si.EndPosition = seg.EndPosition; di.Segments[j] = si; } } downloadsToSave.Add(di); } } DownloadParameters downloadParameters = new DownloadParameters(); downloadParameters.defaultDownloadDirectory = DownloadManager.Instance.DefaultDownloadDirectorySource; downloadParameters.lastDownloadId = DownloadManager.Instance.LastDownloadId; downloadParameters.downloadItems = downloadsToSave.ToArray(); //SaveObjects(downloadsToSave); SaveObjects(downloadParameters); }
// Get data, parse and return as a subject list bool GetData(out Dictionary <string, SegmentItem[]> subjectList) { subjectList = new Dictionary <string, SegmentItem[]> (); string packet = ""; if (GetSocketData(out packet) == false) { return(false); // Early exit, with no data. } string[] lineItems = packet.Split('\n'); if (lineItems.Length == 0) { infoMessage += "No data error\n"; return(false); } int subjects = 0; if (!int.TryParse(lineItems[0], out subjects)) { infoMessage += "Invalid data while parsing subjects\n"; return(false); } int line = 1; for (int i = 0; i < subjects && line < lineItems.Length; i++) { string[] subjectSplit = lineItems[line++].Split('\t'); string subjectName = subjectSplit[0].ToLower(); // Strip prefix if (prefix.Length > 0 && prefix.Length < subjectName.Length) { if (subjectName.Substring(0, prefix.Length) == prefix.ToLower()) { subjectName = subjectName.Substring(prefix.Length); } } int noSegments = Convert.ToInt32(subjectSplit[1]); int noMarkers = Convert.ToInt32(subjectSplit[2]); infoMessage += subjectName + " " + noSegments + " segments " + noMarkers + " markers\n"; SegmentItem[] items = new SegmentItem[noSegments + noMarkers]; // Segments int item_i = 0; for (int j = 0; j < noSegments && line < lineItems.Length; j++) { string[] segmentSplit = lineItems[line++].Split('\t'); if (segmentSplit.Length != 8) { infoMessage += "Segment Error: " + segmentSplit.Length; continue; } float[] tr = new float[3]; float[] ro = new float[4]; for (int k = 0; k < 3; k++) { tr[k] = float.Parse(segmentSplit[k + 1]); } for (int k = 0; k < 4; k++) { ro[k] = float.Parse(segmentSplit[k + 4]); } items[item_i++] = new SegmentItem(segmentSplit[0], tr, ro, true); } float[] zero = new float[4]; for (int j = 0; j < 4; j++) { zero[j] = 0.0f; } // Markers for (int j = 0; j < noMarkers && line < lineItems.Length; j++) { string[] segmentSplit = lineItems[line++].Split('\t'); if (segmentSplit.Length != 4) { Debug.Log("Marker Error" + segmentSplit.Length); infoMessage += "Marker Error: " + segmentSplit.Length; continue; } float[] tr = new float[3]; for (int k = 0; k < 3; k++) { if (segmentSplit[k + 1] == "nan") { tr[k] = float.NaN; } else if (float.TryParse(segmentSplit[k + 1], out tr[k]) == false) { Debug.LogWarning("Could not parse line: " + lineItems[line - 1]); } } items[item_i++] = new SegmentItem(segmentSplit[0], tr, zero, false); } if (!subjectList.ContainsKey(subjectName)) { subjectList.Add(subjectName, items); } } return(true); }
public void SegmentDidClick(UISegment seg, SegmentItem item) { UpdateSortList(item.index); }
void CheckFig(CadLayer layer, CadFigure fig) { int n = fig.PointCount; for (int i = 0; i < n; i++) { CadVertex cp = fig.PointList[i]; CadVertex p = DC.WorldPointToDevPoint(cp); CadVertex d = p - TargetPoint; double dist = d.Norm2D(); if (dist > Range) { continue; } Result res = new ResultPoint(cp, dist, fig, i); ResultList.Add(res); } // // Create segment list that in range. // And check center point of segment // // 範囲内の線分リスト作成 // ついでに中点のチェックも行う // n = fig.SegmentCount; for (int i = 0; i < n; i++) { CadSegment seg = fig.GetSegmentAt(i); CadVertex pw = (seg.P1 - seg.P0) / 2 + seg.P0; CadVertex ps = DC.WorldPointToDevPoint(pw); double dist = (ps - TargetPoint).Norm2D(); if (dist <= Range) { Result res = new ResultSegCenter(pw, dist, fig, i); ResultList.Add(res); } CadVertex p0 = DC.WorldPointToDevPoint(seg.P0); CadVertex p1 = DC.WorldPointToDevPoint(seg.P1); double d = CadMath.DistancePointToSeg(p0.vector, p1.vector, TargetPoint.vector); if (d > Range) { continue; } SegmentItem segItem = new SegmentItem(); segItem.Layer = layer; segItem.Fig = fig; segItem.SegIndex = i; segItem.ScrSegment = new CadSegment(p0, p1); SegList.Add(segItem); } }
private bool IsSegVertex(Vector3d v, SegmentItem seg) { return((seg.ScrSegment.P0.vector.Equals(v)) || (seg.ScrSegment.P1.vector.Equals(v))); }
// Get data, parse and return as a subject list bool GetData(out Dictionary< string, SegmentItem[] > subjectList) { subjectList = new Dictionary< string, SegmentItem[] > (); string packet = ""; if (useLocal) { if (!GetLocalData (out packet)) return false; } else { if (!GetSocketData( out packet)) return false; } string[] lineItems = packet.Split ('\n'); if(lineItems.Length == 0) { infoMessage += "No data error\n"; return false; } int subjects = 0; if(!int.TryParse ( lineItems[0], out subjects)) { infoMessage += "Invalid data while parsing subjects\n"; return false; } int line = 1; for(int i=0; i < subjects && line < lineItems.Length; i++) { string[] subjectSplit = lineItems[line++].Split ('\t'); string subjectName = subjectSplit[0].ToLower (); // Strip prefix if(prefix.Length > 0 && prefix.Length < subjectName.Length) { if(subjectName.Substring(0, prefix.Length) == prefix.ToLower ()) { subjectName = subjectName.Substring (prefix.Length); } } int noSegments = Convert.ToInt32 (subjectSplit[1]); int noMarkers = Convert.ToInt32 (subjectSplit[2]); infoMessage += subjectName + " " + noSegments + " segments " + noMarkers + " markers\n"; SegmentItem[] items = new SegmentItem[noSegments + noMarkers]; // Segments int item_i=0; for(int j=0; j < noSegments && line < lineItems.Length; j++) { string[] segmentSplit = lineItems[line++].Split('\t'); if(segmentSplit.Length != 8) { infoMessage += "Segment Error: " + segmentSplit.Length; continue; } float[] tr = new float[3]; float[] ro = new float[4]; for(int k=0; k < 3; k++) tr[k] = float.Parse (segmentSplit[k+1]); for(int k=0; k < 4; k++) ro[k] = float.Parse (segmentSplit[k+4]); items[item_i++] = new SegmentItem(segmentSplit[0], tr, ro, true); } float[] zero = new float[4]; for(int j=0; j < 4; j++) zero[j] = 0.0f; // Markers for(int j=0; j < noMarkers && line < lineItems.Length; j++) { string[] segmentSplit = lineItems[line++].Split('\t'); if(segmentSplit.Length != 4) { Debug.Log ("Marker Error" + segmentSplit.Length); infoMessage += "Marker Error: " + segmentSplit.Length; continue; } float[] tr = new float[3]; for(int k=0; k < 3; k++) tr[k] = float.Parse (segmentSplit[k+1]); items[item_i++] = new SegmentItem(segmentSplit[0], tr, zero, false); } if(!subjectList.ContainsKey(subjectName)) subjectList.Add (subjectName, items); } return true; }