Пример #1
0
        public void ReleaseMarker(TimeRulerMarker marker)
        {
            if (marker == null)
            {
                throw new ArgumentNullException("marker");
            }

            // 登録を解除。
            markers.Remove(marker.Id);
        }
Пример #2
0
        public TimeRulerMarker CreateMarker()
        {
            int id = ++markerIdCounter;

            // マーカを登録。
            var marker = new TimeRulerMarker(this, id);

            markers[id] = marker;

            return(marker);
        }
Пример #3
0
        /// <summary>
        /// 指定されたマーカに対する計測を終了させます。
        /// </summary>
        /// <param name="marker">計測を終了させるマーカ。</param>
        internal void End(TimeRulerMarker marker)
        {
            // currentFrameLog の同期をとるために自身をロック。
            lock (this)
            {
                // 対象のバーを取得。
                var bar = currentFrameLog.Bars[marker.BarIndex];

                // 呼び出しスタックから POP して MarkerLog のインデックスを取得。
                var markerLogIndex = bar.MarkerLogIndexStack[--bar.MarkerLogIndexStackCount];

                // インデックスの示す MarkerLog と ID が一致しないならば不正な順序での呼び出し。
                if (bar.MarkerLogs[markerLogIndex].Id != marker.Id)
                {
                    throw new InvalidOperationException("Invalid Begin/End call sequence.");
                }

                // 終了時間を記録。
                bar.MarkerLogs[markerLogIndex].EndTime = (float)stopwatch.Elapsed.TotalMilliseconds;
            }
        }
Пример #4
0
        /// <summary>
        /// 指定されたマーカに対する計測を開始させます。
        /// </summary>
        /// <param name="marker">計測を開始させるマーカ。</param>
        internal void Begin(TimeRulerMarker marker)
        {
            // currentFrameLog の同期をとるために自身をロック。
            lock (this)
            {
                // 対象のバーを取得。
                var bar = currentFrameLog.Bars[marker.BarIndex];

                // MarkerLog を追加。
                bar.MarkerLogs[bar.MarkerLogCount].Id        = marker.Id;
                bar.MarkerLogs[bar.MarkerLogCount].BeginTime = (float)stopwatch.Elapsed.TotalMilliseconds;
                bar.MarkerLogs[bar.MarkerLogCount].EndTime   = float.NaN;
                bar.MarkerLogs[bar.MarkerLogCount].Color     = marker.Color;

                // MarkerLog のインデックスを呼び出しスタックに追加。
                bar.MarkerLogIndexStack[bar.MarkerLogIndexStackCount++] = bar.MarkerLogCount;

                // MarkerLog 数を増やす。
                bar.MarkerLogCount++;
            }
        }
Пример #5
0
        /// <summary>
        /// 指定されたマーカに対する計測を終了させます。
        /// </summary>
        /// <param name="marker">計測を終了させるマーカ。</param>
        internal void End(TimeRulerMarker marker)
        {
            // currentFrameLog の同期をとるために自身をロック。
            lock (this)
            {
                // 対象のバーを取得。
                var bar = currentFrameLog.Bars[marker.BarIndex];

                // 呼び出しスタックから POP して MarkerLog のインデックスを取得。
                var markerLogIndex = bar.MarkerLogIndexStack[--bar.MarkerLogIndexStackCount];

                // インデックスの示す MarkerLog と ID が一致しないならば不正な順序での呼び出し。
                if (bar.MarkerLogs[markerLogIndex].Id != marker.Id)
                    throw new InvalidOperationException("Invalid Begin/End call sequence.");

                // 終了時間を記録。
                bar.MarkerLogs[markerLogIndex].EndTime = (float) stopwatch.Elapsed.TotalMilliseconds;
            }
        }
Пример #6
0
        /// <summary>
        /// 指定されたマーカに対する計測を開始させます。
        /// </summary>
        /// <param name="marker">計測を開始させるマーカ。</param>
        internal void Begin(TimeRulerMarker marker)
        {
            // currentFrameLog の同期をとるために自身をロック。
            lock (this)
            {
                // 対象のバーを取得。
                var bar = currentFrameLog.Bars[marker.BarIndex];

                // MarkerLog を追加。
                bar.MarkerLogs[bar.MarkerLogCount].Id = marker.Id;
                bar.MarkerLogs[bar.MarkerLogCount].BeginTime = (float) stopwatch.Elapsed.TotalMilliseconds;
                bar.MarkerLogs[bar.MarkerLogCount].EndTime = float.NaN;
                bar.MarkerLogs[bar.MarkerLogCount].Color = marker.Color;

                // MarkerLog のインデックスを呼び出しスタックに追加。
                bar.MarkerLogIndexStack[bar.MarkerLogIndexStackCount++] = bar.MarkerLogCount;

                // MarkerLog 数を増やす。
                bar.MarkerLogCount++;
            }
        }
Пример #7
0
        public void ReleaseMarker(TimeRulerMarker marker)
        {
            if (marker == null) throw new ArgumentNullException("marker");

            // 登録を解除。
            markers.Remove(marker.Id);
        }
Пример #8
0
        public TimeRulerMarker CreateMarker()
        {
            int id = ++markerIdCounter;

            // マーカを登録。
            var marker = new TimeRulerMarker(this, id);
            markers[id] = marker;

            return marker;
        }