// EVALUATE //
        //
        // Evaluate when particle specific data IS available.
        override public void Evaluate(ref Vector4[] input)
        {
            int particleIndex;

            for (int i = 0; i < ownerBlueprint.ownerEmitter.activeParticleIndices.Length; i++)
            {
                particleIndex = ownerBlueprint.ownerEmitter.activeParticleIndices[i];
                switch (conversionMode.GetValue())
                {
                case (int)eConversionModes.DirectionToRotation:
                    // TODO: Choose upvector.
                    Vector3 lookRotation = input[particleIndex];
                    if (lookRotation == Vector3.zero)
                    {
                        lookRotation.x = 0.00001f;
                    }
                    input[particleIndex] = Quaternion.LookRotation(lookRotation, Vector3.up).eulerAngles;
                    break;

                case (int)eConversionModes.RotationToDirection:
                    input[particleIndex] = Quaternion.Euler(input[particleIndex]) * Vector3.forward;
                    break;

                case (int)eConversionModes.HSVToRGB:
                    input[particleIndex] = AmpsHelpers.HSVAtoRGBA(input[particleIndex]);
                    break;

                case (int)eConversionModes.RGBToHSV:
                    input[particleIndex] = AmpsHelpers.RGBAtoHSVA(input[particleIndex]);
                    break;
                }
            }
        }