示例#1
0
        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);
        }
示例#2
0
 public ResultCross(CadVertex wp, double dist, SegmentItem seg0, SegmentItem seg1)
     : base(wp, dist)
 {
     WoldPoint = wp;
     Dist      = dist;
     Seg0      = seg0;
     Seg1      = seg1;
 }
示例#3
0
 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));
 }
示例#4
0
 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));
 }
示例#5
0
 // 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);
     }
 }
示例#6
0
        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);
        }
示例#7
0
    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);
        }
示例#9
0
    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);
    }
示例#10
0
        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);
                }
            }
        }
示例#11
0
        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);
        }
示例#12
0
    // 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);
    }
示例#13
0
 public void SegmentDidClick(UISegment seg, SegmentItem item)
 {
     UpdateSortList(item.index);
 }
示例#14
0
        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);
            }
        }
示例#15
0
 private bool IsSegVertex(Vector3d v, SegmentItem seg)
 {
     return((seg.ScrSegment.P0.vector.Equals(v)) || (seg.ScrSegment.P1.vector.Equals(v)));
 }
示例#16
0
文件: MocapSocket.cs 项目: deeni/vive
	// 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;
	}