Exemple #1
0
        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();
            }
        }
Exemple #2
0
        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];
        }
Exemple #3
0
    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;
    }