private void DrawCursor() { if (_lineCursorRenderer == null) { CreateCursor(); } _cursorLine.gameObject.SetActive(true); if (BrushService.IsEmissionEnabled()) { _lineCursorRenderer.sharedMaterial.EnableKeyword("_EMISSION"); _lineCursorRenderer.sharedMaterial.SetColor("_EmissionColor", BrushService.GetBrushEmissionColor() * BrushService.GetBrushEmissionIntensity()); } _lineCursorRenderer.colorGradient = BrushService.GetBrushGradient(); _lineCursorRenderer.widthCurve = BrushService.GetBrushWidthCurve(); switch (BrushService.GetBrushShape()) { case Shape.Line: case Shape.Phyllotaxis: _lineCursorRenderer.positionCount = 2; _lineCursorRenderer.SetPosition(0, _camera.ScreenToWorldPoint(Input.mousePosition)); _lineCursorRenderer.SetPosition(1, _camera.ScreenToWorldPoint(Input.mousePosition)); return; case Shape.Triangle: _shapePointAmout = 3; break; case Shape.Square: _shapePointAmout = 4; break; case Shape.Pentagon: _shapePointAmout = 5; break; case Shape.Hexagon: _shapePointAmout = 6; break; case Shape.Heptagon: _shapePointAmout = 7; break; case Shape.Octagon: _shapePointAmout = 8; break; } _shapePoints = new Vector3[_shapePointAmout]; _rotateVector = Quaternion.AngleAxis(_initialRotation, new Vector3(0, 0, 1)) * new Vector3(1, 0, 0); for (int i = 0; i < _shapePointAmout; i++) { _shapePoints[i] = (_rotateVector * BrushService.GetBrushShapeInitSize()) + _camera.ScreenToWorldPoint(Input.mousePosition); _rotateVector = Quaternion.AngleAxis(360 / _shapePointAmout, new Vector3(0, 0, 1)) * _rotateVector; } _lineCursorRenderer.positionCount = _shapePointAmout + 1; for (int i = 0; i < _shapePointAmout; i++) { _lineCursorRenderer.SetPosition(i, _shapePoints[i]); } _lineCursorRenderer.SetPosition(_shapePointAmout, _shapePoints[0]); }