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); } }
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); }
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); }