Ejemplo n.º 1
0
        private protected (_CurveNode <T> A, _CurveNode <T> B, float Amount) FindSample(float offset)
        {
            if (_Keys.Count == 0)
            {
                return(default(_CurveNode <T>), default(_CurveNode <T>), 0);
            }

            var(keyA, keyB, amount) = SamplerFactory.FindPairContainingOffset(_Keys.Keys, offset);

            return(_Keys[keyA], _Keys[keyB], amount);
        }
Ejemplo n.º 2
0
        private protected (_CurveNode <T>, _CurveNode <T>, float) FindSample(float offset)
        {
            if (_Keys.Count == 0)
            {
                return(default(_CurveNode <T>), default(_CurveNode <T>), 0);
            }

            var offsets = SamplerFactory.FindPairContainingOffset(_Keys.Keys, offset);

            return(_Keys[offsets.Item1], _Keys[offsets.Item2], offsets.Item3);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Sets the incoming tangent to an existing point.
        /// </summary>
        /// <param name="offset">The offset of the existing point.</param>
        /// <param name="tangent">The tangent value.</param>
        public void SetIncomingTangent(float offset, T tangent)
        {
            Guard.IsTrue(_Keys.ContainsKey(offset), nameof(offset));

            offset -= float.Epsilon;

            var offsets = SamplerFactory.FindPairContainingOffset(_Keys.Keys, offset);

            var a = _Keys[offsets.Item1];
            var b = _Keys[offsets.Item2];

            if (a.Degree == 1)
            {
                a.OutgoingTangent = GetTangent(a.Point, b.Point);
            }

            a.Degree          = 3;
            b.IncomingTangent = tangent;

            _Keys[offsets.Item1] = a;
            _Keys[offsets.Item2] = b;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Sets the outgoing tangent to an existing point.
        /// </summary>
        /// <param name="offset">The offset of the existing point.</param>
        /// <param name="tangent">The tangent value.</param>
        public void SetOutgoingTangent(float offset, T tangent)
        {
            Guard.IsTrue(_Keys.ContainsKey(offset), nameof(offset));

            var(keyA, keyB, _) = SamplerFactory.FindPairContainingOffset(_Keys.Keys, offset);

            var a = _Keys[keyA];
            var b = _Keys[keyB];

            if (keyA != keyB)
            {
                if (a.Degree == 1)
                {
                    b.IncomingTangent = GetTangent(a.Point, b.Point);
                }
                _Keys[keyB] = b;
            }

            a.Degree = 3;

            a.OutgoingTangent = tangent;

            _Keys[keyA] = a;
        }