// 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; } } }