コード例 #1
0
        public void Craft()
        {
            _path      = GetComponent <Trail_Path>();
            numDoubles = 0;
            Trail_Path_Point pointA = _path.GetPathPoint(0.0f);
            Trail_Path_Point pointB = pointA;


            for (float dist = 0.0f; dist < _path.TotalDistance; dist += _segment_length)
            {
                pointB = _path.GetPathPoint(Mathf.Clamp(dist + _segment_length, 0, _path.TotalDistance));

                _helpTransform1.rotation = Quaternion.LookRotation(pointA.forward, pointA.up);
                _helpTransform1.position = transform.TransformPoint(pointA.point);

                _helpTransform2.rotation = Quaternion.LookRotation(pointB.forward, pointB.up);
                _helpTransform2.position = transform.TransformPoint(pointB.point);

                Add_Segment();

                pointA = pointB;
            }

            if (shouldOptimizeMesh)
            {
                Debug.Log("Double verts removed:" + numDoubles);
            }
        }
コード例 #2
0
        private void DrawGizmos(bool selected)
        {
            _children = new Transform[transform.childCount];
            Vector3[] points = new Vector3[_children.Length];
            Vector3[] ups    = new Vector3[_children.Length];

            for (int i = 0; i < transform.childCount; i++)
            {
                _children[i] = transform.GetChild(i);
                _children[i].gameObject.name = "point " + i;

                points[i] = _children[i].localPosition;
                ups[i]    = transform.InverseTransformDirection(_children[i].up);
            }

            if (transform.childCount > 1)
            {
                _path.SetPoints(points, ups, _isCircuit);
            }
            else
            {
                return;
            }

            TotalDistance = _path.TotalDistance;

            Trail_Path_Point prev = GetPathPoint(0.0f);
            float            dist = -1.0f;

            do
            {
                dist = Mathf.Clamp(dist + 1.0f, 0, TotalDistance);

                Trail_Path_Point next = GetPathPoint(dist);

                Gizmos.color = selected ? new Color(0, 1, 1, 1) : new Color(0, 1, 1, 0.5f);
                Gizmos.DrawLine(transform.TransformPoint(prev.point), transform.TransformPoint(next.point));
                Gizmos.color = selected ? Color.green : new Color(0, 1, 0, 0.5f);
                Gizmos.DrawLine(transform.TransformPoint(next.point), transform.TransformPoint(next.point) + transform.TransformDirection(next.up));
                Gizmos.color = selected ? Color.red : new Color(1, 0, 0, 0.5f);
                Gizmos.DrawLine(transform.TransformPoint(next.point), transform.TransformPoint(next.point) + transform.TransformDirection(next.right * 0.5f));

                prev = next;
            }while(dist < TotalDistance);
        }
コード例 #3
0
ファイル: Trail_Path.cs プロジェクト: BenDy557/HoverRace
        private void DrawGizmos(bool selected)
        {
            _children_transforms = new Transform[transform.childCount];
            for (int i = 0; i < transform.childCount; i++)
            {
                _children_transforms[i] = transform.GetChild(i);
                _children_transforms[i].gameObject.name = "point " + i;
            }


            if (_children_transforms.Length > 1)
            {
                GatherValues();
            }

            if (_children_transforms.Length <= 1)
            {
                return;
            }


            Trail_Path_Point prev = GetPathPoint(0.0f);
            float            dist = -1.0f;

            do
            {
                dist = Mathf.Clamp(dist + 10.0f, 0, TotalDistance);

                Trail_Path_Point next = GetPathPoint(dist);

                Gizmos.color = selected ? new Color(0, 1, 1, 1) : new Color(0, 1, 1, 0.5f);
                Gizmos.DrawLine(transform.TransformPoint(prev.point), transform.TransformPoint(next.point));
                Gizmos.color = selected ? Color.green : new Color(0, 1, 0, 0.5f);
                Gizmos.DrawLine(transform.TransformPoint(next.point), transform.TransformPoint(next.point) + transform.TransformDirection(next.up * 5.0f));
                Gizmos.color = selected ? Color.red : new Color(1, 0, 0, 0.5f);
                Gizmos.DrawLine(transform.TransformPoint(next.point), transform.TransformPoint(next.point) + transform.TransformDirection(next.right * 10.0f));

                prev = next;
            }while(dist < TotalDistance);
        }