public MaterialSetOLD ProvideNext(ProviderContext context) { if (currentIndex > context.CycleLength) { currentIndex = 0; } var position = 1.0 / context.CycleLength * currentIndex; var gradientStepSpan = GradientStepData.Sum(step => step.Offset); var additivestepPercentage = 0d; MaterialSetOLD interpolatedMaterialSet = MaterialPalette.Sets.BrownBrushSet; if (position >= 1) { currentIndex++; return(GradientStepData.Last().MaterialSet); } for (var x = 0; x <= GradientStepData.Count - 2; x++) { var stepPercentage = GradientStepData[x].Offset / gradientStepSpan; var stepProgression = position - additivestepPercentage; var stepProgressionPercentage = stepProgression / stepPercentage; if (position >= additivestepPercentage && position < (additivestepPercentage + stepPercentage)) { interpolatedMaterialSet = MediaExtensions.Interpolate(GradientStepData[x].MaterialSet, GradientStepData[x + 1].MaterialSet, stepProgressionPercentage); break; } additivestepPercentage += stepPercentage; } currentIndex++; return(interpolatedMaterialSet); }
public MaterialSetOLD ProvideNext(ProviderContext context) { if (currentIndex > context.CycleLength) currentIndex = 0; var position = 1.0 / context.CycleLength * currentIndex; var gradientStepSpan = GradientStepData.Sum(step => step.Offset); var additivestepPercentage = 0d; MaterialSetOLD interpolatedMaterialSet = MaterialPalette.Sets.BrownBrushSet; if (position >= 1) { currentIndex++; return GradientStepData.Last().MaterialSet; } for (var x = 0; x <= GradientStepData.Count - 2; x++) { var stepPercentage = GradientStepData[x].Offset / gradientStepSpan; var stepProgression = position - additivestepPercentage; var stepProgressionPercentage = stepProgression / stepPercentage; if (position >= additivestepPercentage && position < (additivestepPercentage + stepPercentage)) { interpolatedMaterialSet = MediaExtensions.Interpolate(GradientStepData[x].MaterialSet, GradientStepData[x + 1].MaterialSet, stepProgressionPercentage); break; } additivestepPercentage += stepPercentage; } currentIndex++; return interpolatedMaterialSet; }
public MaterialSetOLD ProvideNext(ProviderContext context) { var materialSet = currentIndex % 2 == 0 ? MaterialSet1 : MaterialSet2; currentIndex++; return(materialSet); }
public MaterialSetOLD ProvideNext(ProviderContext context) { switch (CyclicalMode) { case CyclicalBehavior.Repeat: { if (currentIndex > MaterialSetSequence.Count - 1) { currentIndex = 0; } if (currentIndex < 0) { currentIndex = MaterialSetSequence.Count - 1; } var currentSet = MaterialSetSequence[currentIndex]; if (Reverse) { currentIndex--; } else { currentIndex++; } return(currentSet); } case CyclicalBehavior.Mirror: { if (currentIndex > MaterialSetSequence.Count - 1) { currentIndex = MaterialSetSequence.Count - 2; mirrorDirection = MirrorDirection.Backward; } else if (currentIndex < 0) { currentIndex = 1; mirrorDirection = MirrorDirection.Forward; } var currentSet = MaterialSetSequence[currentIndex]; switch (mirrorDirection) { case MirrorDirection.Forward: currentIndex++; break; case MirrorDirection.Backward: currentIndex--; break; } return(currentSet); } default: throw new NotSupportedException($"Cyclical Mode {CyclicalMode} is not supported."); } }
public void Reset(ProviderContext context) { if (Reverse) { currentIndex = context.CycleLength - 1; } else { currentIndex = 0; } }
public MaterialSetOLD ProvideNext(ProviderContext context) { switch (CyclicalMode) { case CyclicalBehavior.Repeat: { if (currentIndex > MaterialSetSequence.Count - 1) currentIndex = 0; if (currentIndex < 0) currentIndex = MaterialSetSequence.Count - 1; var currentSet = MaterialSetSequence[currentIndex]; if (Reverse) currentIndex--; else currentIndex++; return currentSet; } case CyclicalBehavior.Mirror: { if (currentIndex > MaterialSetSequence.Count - 1) { currentIndex = MaterialSetSequence.Count - 2; mirrorDirection = MirrorDirection.Backward; } else if (currentIndex < 0) { currentIndex = 1; mirrorDirection = MirrorDirection.Forward; } var currentSet = MaterialSetSequence[currentIndex]; switch (mirrorDirection) { case MirrorDirection.Forward: currentIndex++; break; case MirrorDirection.Backward: currentIndex--; break; } return currentSet; } default: throw new NotSupportedException($"Cyclical Mode {CyclicalMode} is not supported."); } }
public void Reset(ProviderContext context) { currentIndex = 0; }
public MaterialSetOLD ProvideNext(ProviderContext context) { var materialSet = currentIndex % 2 == 0 ? MaterialSet1 : MaterialSet2; currentIndex++; return materialSet; }
public void Reset(ProviderContext context) { if (Reverse) currentIndex = context.CycleLength - 1; else currentIndex = 0; }