void BakeMesh(bool needUpdateSpriteArrays) { if (needUpdateSpriteArrays) { UpdateSpriteArrays(); } List <ShapeControlPointExperimental> shapePoints = new List <ShapeControlPointExperimental>(); List <SpriteShapeMetaData> shapeMetaData = new List <SpriteShapeMetaData>(); for (int i = 0; i < m_Spline.GetPointCount(); ++i) { ShapeControlPointExperimental shapeControlPoint; shapeControlPoint.position = m_Spline.GetPosition(i); shapeControlPoint.leftTangent = m_Spline.GetLeftTangent(i); shapeControlPoint.rightTangent = m_Spline.GetRightTangent(i); shapeControlPoint.mode = (int)m_Spline.GetTangentMode(i); shapePoints.Add(shapeControlPoint); SpriteShapeMetaData metaData; metaData.bevelCutoff = m_Spline.GetBevelCutoff(i); metaData.bevelSize = m_Spline.GetBevelSize(i); metaData.corner = m_Spline.GetCorner(i); metaData.height = m_Spline.GetHeight(i); metaData.spriteIndex = (uint)m_Spline.GetSpriteIndex(i); shapeMetaData.Add(metaData); } if (spriteShapeRenderer != null && ValidatePoints(shapePoints)) { SpriteShapeUtility.GenerateSpriteShape(spriteShapeRenderer, m_CurrentShapeParameters, shapePoints.ToArray(), shapeMetaData.ToArray(), m_AngleRangeInfoArray, m_EdgeSpriteArray, m_CornerSpriteArray); } if (m_DynamicOcclusionOverriden) { spriteShapeRenderer.allowOcclusionWhenDynamic = m_DynamicOcclusionLocal; m_DynamicOcclusionOverriden = false; } }