/// <summary> /// Make sure Oriented Points were calculated /// </summary> private void ValidateOrientedPoints() { if (spline.OrientedPoints == null || (spline.OrientedPoints.Length == 0 || spline.GetComponent <SplineMeshRenderer>() == null)) { spline.CalculateOrientedPoints(1f); } }
/// <summary> /// Calculate mesh generation parameters /// </summary> private void CreateMesh() { Profiler.BeginSample("CreateMesh"); if (_spline == null) { return; } if (_auxTransform1 != null) { GetAuxTranforms(); } if (_auxTransform1 == null) { return; } bool exceededVertsLimit = false; _splineLength = _spline.Length; // 2.0 Mesh generation _spline.CalculateOrientedPoints(_baseMeshLength); int penultimateIndex = _spline.OrientedPoints.Length - 2; for (int i = 0; i <= penultimateIndex; i++) { // Set aux transform 1 _auxTransform1.rotation = _spline.OrientedPoints[i].Rotation; _auxTransform1.position = _spline.OrientedPoints[i].Position + _meshOffset; // Set aux transform 2 _auxTransform2.rotation = _spline.OrientedPoints[i + 1].Rotation; _auxTransform2.position = _spline.OrientedPoints[i + 1].Position + _meshOffset; exceededVertsLimit = false; AddMeshSegment(_auxTransform1, _auxTransform2, out exceededVertsLimit); if (exceededVertsLimit) { _meshGenerationMethod = MeshGenerationMethod.Manual; break; } } Profiler.EndSample(); }