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;
		}
예제 #3
0
        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)
 {
     currentIndex = 0;
 }
		public void Reset(ProviderContext context)
		{
			if (Reverse)
				currentIndex = context.CycleLength - 1;
			else
				currentIndex = 0;
		}