public float3 Evaluate(float time) { keys.buffer = keys.GetBuffer(entityManager); ColorKeyData keyLeft = keys.buffer[0].Value; ColorKeyData keyRight = keys.buffer[keys.buffer.Length - 1].Value; for (int i = 0; i < keys.buffer.Length; i++) { if (keys.buffer[i].Value.Time <= time) { keyLeft = keys.buffer[i].Value; } if (keys.buffer[i].Value.Time >= time) { keyRight = keys.buffer[i].Value; break; } } if (blendMode == MegaGradient.BlendMode.Linear) { float blendTime = Mathf.InverseLerp(keyLeft.Time, keyRight.Time, time); return(math.lerp(keyLeft.ColorValue, keyRight.ColorValue, blendTime)); // return Color.Lerp(keyLeft.Color, keyRight.Color, blendTime); } else { return(keyRight.ColorValue); } }
public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem) { MegaGradientData data = new MegaGradientData(dstManager); data.blendMode = editorGradient.blendMode; data.randomizeColor = editorGradient.randomizeColor; data.keys.GetBuffer(dstManager); editorGradient.hide = true; for (int i = 0; i < editorGradient.NumKeys; i++) { if (i < data.NumKeys) { data.keys.buffer[i] = new ColorKeyDataBufferElement { Value = ColorKeyData.ColorKeyToColorKeyData(editorGradient.GetKey(i)) } } ; else { data.keys.buffer.Add(new ColorKeyDataBufferElement { Value = ColorKeyData.ColorKeyToColorKeyData(editorGradient.GetKey(i)) }); } } dstManager.AddComponentData(entity, data); }
private int FinishAddition(float3 color, float time) { ColorKeyData newKeys = new ColorKeyData(color, time); for (int i = 0; i < keys.buffer.Length; i++) { if (newKeys.Time < keys.buffer[i].Value.Time) { keys.buffer.Insert(i, new ColorKeyDataBufferElement { Value = newKeys }); return(i); } } keys.buffer.Add(new ColorKeyDataBufferElement { Value = newKeys }); return(keys.buffer.Length - 1); }