public void Initialize(ILineModel lineModel, IAudioPeerService audioPeer, Material trailMaterial) { _lineModel = lineModel; _audioPeer = audioPeer; _currentScale = lineModel.PhyllotaxisProperty.Scale; _forward = true; _trailRenderer = GetComponent <TrailRenderer>(); _trailRenderer.material = new Material(trailMaterial); _trailRenderer.colorGradient = lineModel.Gradient; _trailRenderer.widthCurve = lineModel.WidthCurve; if (lineModel.IsEmissionEnabled) { _trailRenderer.sharedMaterial.EnableKeyword("_EMISSION"); _trailRenderer.sharedMaterial.SetColor("_EmissionColor", lineModel.EmissionColor * lineModel.EmissionIntensity); } _number = lineModel.PhyllotaxisProperty.NumberStart; transform.localPosition = CalculatePhyllotaxis(lineModel.PhyllotaxisProperty.Degree, _currentScale, _number); if (lineModel.PhyllotaxisProperty.UseLerping) { _isLerping = true; SetLerpPositions(); } }
public void Initialize(ILineModel line, IAudioPeerService audioPeer) { _line = line; _audioPeer = audioPeer; _targetPositions = new Vector3[line.KochLineProperty.OriginalPositions.Length]; _targetPositions = line.KochLineProperty.OriginalPositions; _bezierVertexCount = line.KochLineProperty.BezierVertexCount; _lerpAudio = new float[line.KochLineProperty.ShapePointAmount]; foreach (StartGen t in line.KochLineProperty.ListStartGeneration) { GenerateKochLine(line, _targetPositions, line.KochLineProperty.AnimationCurve.keys, t.Outwards, t.Scale); _generationCount++; } _lerpPositions = new Vector3[_positions.Length]; }
public void Initialize(ILineModel line, Transform parent, GameObject trailPrefab, Material trailMaterial, AnimationCurve trailWidthCurve, IAudioPeerService audioPeer) { _line = line; _audioPeer = audioPeer; _trails = new List <TrailObject>(); _startColor = new Color(0, 0, 0, 0); _endColor = new Color(0, 0, 0, 1); _targetPositions = new Vector3[line.KochLineProperty.OriginalPositions.Length]; _targetPositions = line.KochLineProperty.OriginalPositions; _bezierVertexCount = line.KochLineProperty.BezierVertexCount; foreach (StartGen t in line.KochLineProperty.ListStartGeneration) { GenerateKochLine(line, _targetPositions, line.KochLineProperty.AnimationCurve.keys, t.Outwards, t.Scale); _generationCount++; } _lerpPositions = new Vector3[_positions.Length]; for (int i = 0; i < line.KochLineProperty.ShapePointAmount; i++) { GameObject trailInstance = Instantiate(trailPrefab, transform.position, Quaternion.identity); trailInstance.transform.SetParent(parent); TrailObject trailObjectInstance = new TrailObject { Go = trailInstance, Trail = trailInstance.GetComponent <TrailRenderer>(), EmissionColor = line.Gradient.Evaluate(i * (1.0f / line.KochLineProperty.ShapePointAmount)) }; trailObjectInstance.Trail.material = new Material(trailMaterial); trailObjectInstance.Trail.numCapVertices = 8; trailObjectInstance.Trail.widthCurve = trailWidthCurve; Vector3 instantiatePosition; if (_generationCount > 0) { int step; if (line.KochLineProperty.UseBezierCurves) { step = _bezierPositions.Length / line.KochLineProperty.ShapePointAmount; instantiatePosition = _bezierPositions[i * step]; trailObjectInstance.CurrentTargetNum = (i * step) + 1; trailObjectInstance.TargetPosition = _bezierPositions[trailObjectInstance.CurrentTargetNum]; } else { step = _positions.Length / line.KochLineProperty.ShapePointAmount; instantiatePosition = _positions[i * step]; trailObjectInstance.CurrentTargetNum = (i * step) + 1; trailObjectInstance.TargetPosition = _positions[trailObjectInstance.CurrentTargetNum]; } } else { instantiatePosition = line.KochLineProperty.OriginalPositions[i]; trailObjectInstance.CurrentTargetNum = i + 1; trailObjectInstance.TargetPosition = line.KochLineProperty.OriginalPositions[trailObjectInstance.CurrentTargetNum]; } trailObjectInstance.Go.transform.localPosition = instantiatePosition; _trails.Add(trailObjectInstance); } _enabled = true; }