protected void UpdateQueue(Queue <UIPointTrail.KeyPoint> queue) { if (queue.Count <= 0) { return; } UIPointTrail.KeyPoint keyPoint = queue.Peek(); float time = RealTime.time; while (keyPoint != null && time - keyPoint.enqueueTime > this.mPointTime) { queue.Dequeue(); if (queue.Count > 0) { keyPoint = queue.Peek(); } else { keyPoint = null; } } int num = 0; foreach (UIPointTrail.KeyPoint keyPoint2 in queue) { keyPoint2.size = (float)(num + 1) / (float)queue.Count; num++; } }
public void AddPoint(Vector3 pos, float time) { UIPointTrail.KeyPoint keyPoint = new UIPointTrail.KeyPoint(); keyPoint.point = pos; keyPoint.enqueueTime = time; keyPoint.size = 1f; keyPoint.mainPoint = true; if (this.mNewQueue) { this.GetEmptyQueue(); this.mNewQueue = false; } if (this.mCurrentQueue != null) { if (this.mCurrentQueue.Count > 0 && this.mLastPoint != null) { UIPointTrail.KeyPoint keyPoint2 = this.mLastPoint; float num = Vector3.Distance(keyPoint2.point, keyPoint.point); if (keyPoint2 != null && num > 1f && num < 50f) { UIPointTrail.KeyPoint keyPoint3 = new UIPointTrail.KeyPoint(); keyPoint3.point = (keyPoint2.point + keyPoint.point) / 2f; keyPoint3.enqueueTime = (keyPoint2.enqueueTime + keyPoint.enqueueTime) / 2f; keyPoint3.size = (keyPoint2.size + keyPoint.size) / 2f; keyPoint3.mainPoint = false; this.mCurrentQueue.Enqueue(keyPoint3); } } this.mLastPoint = keyPoint; this.mCurrentQueue.Enqueue(keyPoint); } }