AlphaTab.Model.Beat.RemoveWhammyBarPoint C# (CSharp) Метод

RemoveWhammyBarPoint() публичный Метод

public RemoveWhammyBarPoint ( int index ) : void
index int
Результат void
        public void RemoveWhammyBarPoint(int index)
        {
            // check index
            if (index < 0 || index >= WhammyBarPoints.Count) return;

            // remove point
            WhammyBarPoints.RemoveAt(index);
            var point = WhammyBarPoints[index];

            // update maxWhammy point if required
            if (point != MaxWhammyPoint) return;
            MaxWhammyPoint = null;
            foreach (var currentPoint in WhammyBarPoints)
            {
                if (MaxWhammyPoint == null || currentPoint.Value > MaxWhammyPoint.Value)
                {
                    MaxWhammyPoint = currentPoint;
                }
            }
        }

Usage Example

Пример #1
0
        /// <summary>
        /// Tries to apply a beat effect to the given beat.
        /// </summary>
        /// <returns>true if a effect could be applied, otherwise false</returns>
        private bool ApplyBeatEffect(Beat beat)
        {
            var syData = _syData.ToString().ToLower();
            if (syData == "f")
            {
                beat.FadeIn = true;
                NewSy();
                return true;
            }
            if (syData == "v")
            {
                beat.Vibrato = VibratoType.Slight;
                NewSy();
                return true;
            }
            if (syData == "s")
            {
                beat.Slap = true;
                NewSy();
                return true;
            }
            if (syData == "p")
            {
                beat.Pop = true;
                NewSy();
                return true;
            }
            if (syData == "dd")
            {
                beat.Dots = 2;
                NewSy();
                return true;
            }
            if (syData == "d")
            {
                beat.Dots = 1;
                NewSy();
                return true;
            }
            if (syData == "su")
            {
                beat.PickStroke = PickStrokeType.Up;
                NewSy();
                return true;
            }
            if (syData == "sd")
            {
                beat.PickStroke = PickStrokeType.Down;
                NewSy();
                return true;
            }
            if (syData == "tu")
            {
                NewSy();
                if (_sy != AlphaTexSymbols.Number)
                {
                    Error("tuplet", AlphaTexSymbols.Number);
                    return false;
                }
                var tuplet = (int)_syData;
                switch (tuplet)
                {
                    case 3:
                        beat.TupletNumerator = 3;
                        beat.TupletDenominator = 2;
                        break;
                    case 5:
                        beat.TupletNumerator = 5;
                        beat.TupletDenominator = 4;
                        break;
                    case 6:
                        beat.TupletNumerator = 6;
                        beat.TupletDenominator = 4;
                        break;
                    case 7:
                        beat.TupletNumerator = 7;
                        beat.TupletDenominator = 4;
                        break;
                    case 9:
                        beat.TupletNumerator = 9;
                        beat.TupletDenominator = 8;
                        break;
                    case 10:
                        beat.TupletNumerator = 10;
                        beat.TupletDenominator = 8;
                        break;
                    case 11:
                        beat.TupletNumerator = 11;
                        beat.TupletDenominator = 8;
                        break;
                    case 12:
                        beat.TupletNumerator = 12;
                        beat.TupletNumerator = 8;
                        beat.TupletDenominator = 8;
                        break;
                }
                NewSy();
                return true;
            }
            if (syData == "tb" || syData == "tbe")
            {
                var exact = syData == "tbe";
                // read points
                NewSy();
                if (_sy != AlphaTexSymbols.LParensis)
                {
                    Error("tremolobar-effect", AlphaTexSymbols.LParensis);
                    return false;
                }
                _allowNegatives = true;

                NewSy();
                while (_sy != AlphaTexSymbols.RParensis && _sy != AlphaTexSymbols.Eof)
                {
                    int offset;
                    int value;

                    if (exact)
                    {
                        if (_sy != AlphaTexSymbols.Number)
                        {
                            Error("tremolobar-effect", AlphaTexSymbols.Number);
                            return false;
                        }
                        offset = (int)_syData;

                        NewSy();
                        if (_sy != AlphaTexSymbols.Number)
                        {
                            Error("tremolobar-effect", AlphaTexSymbols.Number);
                            return false;
                        }
                        value = (int)_syData;
                    }
                    else
                    {
                        if (_sy != AlphaTexSymbols.Number)
                        {
                            Error("tremolobar-effect", AlphaTexSymbols.Number);
                            return false;
                        }
                        offset = 0;
                        value = (int)_syData;
                    }

                    beat.AddWhammyBarPoint(new BendPoint(offset, value));

                    NewSy();
                }

                while (beat.WhammyBarPoints.Count > 60)
                {
                    beat.RemoveWhammyBarPoint(beat.WhammyBarPoints.Count - 1);
                }

                // set positions
                if (!exact)
                {
                    var count = beat.WhammyBarPoints.Count;
                    var step = (60 / count);
                    var i = 0;
                    while (i < count)
                    {
                        beat.WhammyBarPoints[i].Offset = Math.Min(60, (i * step));
                        i++;
                    }
                }
                else
                {
                    beat.WhammyBarPoints.Sort((a, b) => a.Offset - b.Offset);
                }
                _allowNegatives = false;

                if (_sy != AlphaTexSymbols.RParensis)
                {
                    Error("tremolobar-effect", AlphaTexSymbols.RParensis);
                    return false;
                }
                NewSy();
                return true;
            }

            if (syData == "gr")
            {
                NewSy();
                if (_syData.ToString().ToLower() == "ob")
                {
                    beat.GraceType = GraceType.OnBeat;
                    NewSy();
                }
                else
                {
                    beat.GraceType = GraceType.BeforeBeat;
                }
                return true;
            }

            if (syData == "tp")
            {
                NewSy();
                var duration = Duration.Eighth;
                if (_sy == AlphaTexSymbols.Number)
                {
                    switch ((int)_syData)
                    {
                        case 8:
                            duration = Duration.Eighth;
                            break;
                        case 16:
                            duration = Duration.Sixteenth;
                            break;
                        case 32:
                            duration = Duration.ThirtySecond;
                            break;
                        default:
                            duration = Duration.Eighth;
                            break;
                    }
                    NewSy();
                }
                beat.TremoloSpeed = duration;

                return true;
            }

            return false;
        }