Exemplo n.º 1
0
    /// <summary>
    /// Adds a point to the trail. Points are added if they are minVertexDistance from the last point.
    /// </summary>
    /// <param name="point">Point.</param>
    public void AddPoint(Vector3 point, float pointTime, float currentTime)
    {
        // update trail?
        if (Vector3.Distance(point, lastPoint) < minVertexDistance)
        {
            return;
        }

        // add a time marker?
        if (timeMarkerPrefab != null)
        {
            if ((pointTime - lastTimeMark) > timeMarkInterval)
            {
                // add a time marker
                TimeMark mark = new TimeMark();
                mark.marker = Instantiate(timeMarkerPrefab);
                if (ge.markerParent != null)
                {
                    mark.marker.transform.SetParent(ge.markerParent.transform);
                }
                mark.marker.transform.position = point;
                mark.time = pointTime;
                timeMarks.Add(mark);
                lastTimeMark = pointTime;
                // align the game object so it's Z axis is along the trajectory
                Vector3 trajVector = point - lastPoint;
                mark.marker.transform.rotation = Quaternion.FromToRotation(Vector3.forward, trajVector);
                if (textPrefab != null && canvas != null)
                {
                    mark.textObject = Instantiate(textPrefab);
                    mark.textObject.transform.position = point;
                    Text text = mark.textObject.GetComponent <Text>();
                    text.text = string.Format("{0:F1}", pointTime);
                    mark.textObject.transform.SetParent(canvas.transform);
                    if (rotateText)
                    {
                        mark.textObject.transform.rotation = mark.marker.transform.rotation;
                    }
                }
            }
        }
        lastPoint = point;

        // add new point to traj
        TrajPoint tp = new TrajPoint(point, pointTime);

        points.Add(tp);
    }
Exemplo n.º 2
0
    /// <summary>
    /// Adds a point to the trail. Points are added if they are minVertexDistance from the last point.
    /// </summary>
    /// <param name="point">Point.</param>
    public void AddPoint(Vector3 point, float pointTime, float currentTime)
    {
        // remove any points older than current time
        while ((points.Count > 0) && (points[0].worldTime < currentTime))
        {
            points.RemoveAt(0);
        }

        // add/remove a time marker?
        if (timeMarkerPrefab != null)
        {
            if ((pointTime - lastTimeMark) > timeMarkInterval)
            {
                // add a time marker
                TimeMark mark = new TimeMark();
                mark.marker = Instantiate(timeMarkerPrefab);
                if (GravityEngine.Instance().markerParent != null)
                {
                    mark.marker.transform.SetParent(GravityEngine.Instance().markerParent.transform);
                }
                mark.marker.transform.position = point;
                mark.time = pointTime;
                timeMarks.Add(mark);
                lastTimeMark = pointTime;
                // align the game object so it's Z axis is along the trajectory
                Vector3 trajVector = point - lastPoint;
                mark.marker.transform.rotation = Quaternion.FromToRotation(Vector3.forward, trajVector);
                if (textPrefab != null && canvas != null)
                {
                    mark.textObject = Instantiate(textPrefab);
                    mark.textObject.transform.position = point;
                    Text text = mark.textObject.GetComponent <Text>();
                    text.text = string.Format("{0:F1}", pointTime);
                    mark.textObject.transform.SetParent(canvas.transform);
                    if (rotateText)
                    {
                        mark.textObject.transform.rotation = mark.marker.transform.rotation;
                    }
                }
                // Mark need to keep an absolute reference
                // TODO: Add to some common object
                // mark.marker.transform.SetParent(something);
            }
            // remove any old time markers
            while ((timeMarks.Count > 0) && (timeMarks[0].time < currentTime))
            {
                Destroy(timeMarks[0].marker);
                if (timeMarks[0].textObject != null)
                {
                    Destroy(timeMarks[0].textObject);
                }
                timeMarks.RemoveAt(0);
            }
        }

        // update trail?
        if (Vector3.Distance(point, lastPoint) < minVertexDistance)
        {
            return;
        }

        lastPoint = point;

        // add new point to traj
        TrajPoint tp = new TrajPoint(point, pointTime);

        points.Add(tp);
    }