예제 #1
0
        private void Initialise(CurveKeyCollection keysRed, CurveKeyCollection keysGreen,
            CurveKeyCollection keysBlue)
        {
            _red = new PreCurve(255);
            _green = new PreCurve(255);
            _blue = new PreCurve(255);

            foreach(CurveKey key in keysRed)
            {
                _red.Keys.Add(key);
            }

            foreach(CurveKey key in keysGreen)
            {
                _green.Keys.Add(key);
            }

            foreach(CurveKey key in keysBlue)
            {
                _blue.Keys.Add(key);
            }

            _red.PreCalculate();
            _green.PreCalculate();
            _blue.PreCalculate();
        }
예제 #2
0
        private void Initialize(CurveKeyCollection keysRed, CurveKeyCollection keysGreen,
                                CurveKeyCollection keysBlue)
        {
            _red   = new PreCurve(255);
            _green = new PreCurve(255);
            _blue  = new PreCurve(255);

            foreach (CurveKey key in keysRed)
            {
                _red.Keys.Add(key);
            }

            foreach (CurveKey key in keysGreen)
            {
                _green.Keys.Add(key);
            }

            foreach (CurveKey key in keysBlue)
            {
                _blue.Keys.Add(key);
            }

            _red.PreCalculate();
            _green.PreCalculate();
            _blue.PreCalculate();
        }
예제 #3
0
        public void Properties()
        {
            var curveKeyCollection = new CurveKeyCollection
            {
                new CurveKey(0, 0),
                new CurveKey(-1, 1),
                new CurveKey(-1, 1)
            };

            // Count property

            Assert.AreEqual(3, curveKeyCollection.Count);

            // IsReadOnly property

            Assert.AreEqual(false, curveKeyCollection.IsReadOnly);

            // Item indexer

            var key1 = new CurveKey(-1, 1);
            var key2 = curveKeyCollection[1];
            var key3 = curveKeyCollection[2];

            Assert.AreEqual(true, key1 == key2);
            Assert.AreEqual(false, key2 == key3);
            Assert.AreEqual(key1, key2);
            Assert.AreNotEqual(key2, key3);
            Assert.AreNotEqual(key1, key3);
        }
예제 #4
0
        public void Clone()
        {
            CurveKeyCollection col = c.Clone();

            Assert.AreNotSame(c, col, "#1");
            Assert.AreEqual(c.Count, col.Count, "#2");
            Assert.AreNotEqual(c, col, "#3");
        }
        public void Setup()
        {
            k1 = new CurveKey(12, 123);
            k2 = new CurveKey(11, 11);
            k3 = new CurveKey(-1, -11);

            c = new CurveKeyCollection();
            c.Add(k1);
            c.Add(k2);
            c.Add(k3);
        }
예제 #6
0
        public void TestEquals()
        {
            CurveKeyCollection clone = c.Clone();

            Assert.AreEqual(c, c, "#1");
            Assert.AreNotEqual(c, clone, "#2");
            Assert.AreNotSame(c, clone, "#3");
            Assert.AreNotEqual(c, new CurveKeyCollection(), "#4");
            Assert.AreNotEqual(c, null, "#5");
            Assert.AreNotSame(c, null, "#6");
        }
예제 #7
0
        public void Setup()
        {
            k1 = new CurveKey(12, 123);
            k2 = new CurveKey(11, 11);
            k3 = new CurveKey(-1, -11);

            c = new CurveKeyCollection();
            c.Add(k1);
            c.Add(k2);
            c.Add(k3);
        }
예제 #8
0
        /// <summary>
        /// Creates a ScaleModifier with 2 scale values.
        /// </summary>
        /// <param name="initial">Initial scale.</param>
        /// <param name="ultimate">Ultimate scale.</param>
        public ScaleModifier(float initial, float ultimate)
        {
            initial = (float)Math.Max(initial, 0f);
            ultimate = (float)Math.Max(ultimate, 0f);

            CurveKeyCollection keys = new CurveKeyCollection();
            keys.Add(new CurveKey(0f, initial));
            keys.Add(new CurveKey(1f, ultimate));

            Initialise(keys);
        }
예제 #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CurvedMovement"/> class.
 /// </summary>
 /// <param name="start">starting position.</param>
 /// <param name="end">ending position.</param>
 /// <param name="midPoint">mid point.</param>
 public CurvedMovement(Vector2 start, Vector2 end, Vector2 midPoint)
 {
     this.start         = start;
     this.end           = end;
     this.mid           = midPoint;
     this.curve         = new Curve();
     this.keyCollection = this.curve.Keys;
     this.keyCollection.Add(new CurveKey(start.X, start.Y));
     this.keyCollection.Add(new CurveKey(midPoint.X, midPoint.Y));
     this.keyCollection.Add(new CurveKey(end.X, end.Y));
 }
예제 #10
0
        private void Initialise(CurveKeyCollection keys)
        {
            _curve = new PreCurve(255);

            foreach (CurveKey key in keys)
            {
                _curve.Keys.Add(key);
            }

            _curve.PreCalculate();
        }
예제 #11
0
        private void Initialize(CurveKeyCollection keys)
        {
            _curve = new PreCurve(255);

            foreach (CurveKey key in keys)
            {
                _curve.Keys.Add(key);
            }

            _curve.PreCalculate();
        }
        public OpacityMultiModifier(CurveKeyCollection keys, byte samples)
        {
            _curve = new PreCurve(samples);

            foreach (CurveKey key in keys)
            {
                _curve.Keys.Add(key);
            }

            _curve.PreCalculate();
        }
        /// <summary>
        /// Constructor with 2 opacity values.
        /// </summary>
        /// <param name="initial">Initial opacity.</param>
        /// <param name="ultimate">Ultimate opacity.</param>
        public OpacityModifier(float initial, float ultimate)
        {
            initial = MathHelper.Clamp(initial, 0f, 1f);
            ultimate = MathHelper.Clamp(ultimate, 0f, 1f);

            CurveKeyCollection keys = new CurveKeyCollection();
            keys.Add(new CurveKey(0f, initial));
            keys.Add(new CurveKey(1f, ultimate));

            Initialise(keys);
        }
예제 #14
0
파일: Curve.cs 프로젝트: RUSshy/ultraviolet
        public Curve(CurveLoopType preLoop, CurveLoopType postLoop, IEnumerable<CurveKey> keys)
        {
            this.preLoop = preLoop;
            this.postLoop = postLoop;

            this.keys     = new CurveKeyCollection(keys);
            this.keyFirst = (keys == null) ? null : this.keys[0];
            this.keyLast  = (keys == null) ? null : this.keys[this.keys.Count - 1];
            this.length   = (keys == null) ? 0f : keyLast.Position - keyFirst.Position;

            this.easingFunction = Evaluate;
        }
예제 #15
0
        /// <summary>
        /// Creates a ScaleModifier with 2 scale values.
        /// </summary>
        /// <param name="initial">Initial scale.</param>
        /// <param name="ultimate">Ultimate scale.</param>
        public ScaleModifier(float initial, float ultimate)
        {
            initial  = (float)Math.Max(initial, 0f);
            ultimate = (float)Math.Max(ultimate, 0f);

            CurveKeyCollection keys = new CurveKeyCollection();

            keys.Add(new CurveKey(0f, initial));
            keys.Add(new CurveKey(1f, ultimate));

            Initialize(keys);
        }
예제 #16
0
        /// <summary>
        /// Constructor with 2 opacity values.
        /// </summary>
        /// <param name="initial">Initial opacity.</param>
        /// <param name="ultimate">Ultimate opacity.</param>
        public OpacityModifier(float initial, float ultimate)
        {
            initial  = MathHelper.Clamp(initial, 0f, 1f);
            ultimate = MathHelper.Clamp(ultimate, 0f, 1f);

            CurveKeyCollection keys = new CurveKeyCollection();

            keys.Add(new CurveKey(0f, initial));
            keys.Add(new CurveKey(1f, ultimate));

            Initialize(keys);
        }
예제 #17
0
        /// <summary>
        /// Creates a ScaleModifier with 3 scale values.
        /// </summary>
        /// <param name="initial">Initial scale.</param>
        /// <param name="mid">Middle scale.</param>
        /// <param name="sweep">Position of middle scale.</param>
        /// <param name="ultimate">Ultimate scale.</param>
        public ScaleModifier(float initial, float mid, float sweep, float ultimate)
        {
            initial = (float)Math.Max(initial, 0f);
            mid = (float)Math.Max(mid, 0f);
            sweep = MathHelper.Clamp(sweep, 0f, 1f);
            ultimate = (float)Math.Max(ultimate, 0f);

            CurveKeyCollection keys = new CurveKeyCollection();
            keys.Add(new CurveKey(0f, initial));
            keys.Add(new CurveKey(sweep, mid));
            keys.Add(new CurveKey(1f, ultimate));

            Initialise(keys);
        }
예제 #18
0
        /// <summary>
        /// Creates a ScaleModifier with 3 scale values.
        /// </summary>
        /// <param name="initial">Initial scale.</param>
        /// <param name="mid">Middle scale.</param>
        /// <param name="sweep">Position of middle scale.</param>
        /// <param name="ultimate">Ultimate scale.</param>
        public ScaleModifier(float initial, float mid, float sweep, float ultimate)
        {
            initial  = (float)Math.Max(initial, 0f);
            mid      = (float)Math.Max(mid, 0f);
            sweep    = MathHelper.Clamp(sweep, 0f, 1f);
            ultimate = (float)Math.Max(ultimate, 0f);

            CurveKeyCollection keys = new CurveKeyCollection();

            keys.Add(new CurveKey(0f, initial));
            keys.Add(new CurveKey(sweep, mid));
            keys.Add(new CurveKey(1f, ultimate));

            Initialize(keys);
        }
예제 #19
0
        /// <summary>
        /// Creates a ColorModifier with 2 color values.
        /// </summary>
        /// <param name="initial">Initial color of Particles.</param>
        /// <param name="ultimate">Ultimate color of Particles.</param>
        public ColorModifier(Color initial, Color ultimate)
        {
            CurveKeyCollection keysRed = new CurveKeyCollection();
            keysRed.Add(new CurveKey(0f, (float)initial.R / 255f));
            keysRed.Add(new CurveKey(1f, (float)ultimate.R / 255f));

            CurveKeyCollection keysGreen = new CurveKeyCollection();
            keysGreen.Add(new CurveKey(0f, (float)initial.G / 255f));
            keysGreen.Add(new CurveKey(1f, (float)ultimate.G / 255f));

            CurveKeyCollection keysBlue = new CurveKeyCollection();
            keysBlue.Add(new CurveKey(0f, (float)initial.B / 255f));
            keysBlue.Add(new CurveKey(1f, (float)ultimate.B / 255f));

            Initialise(keysRed, keysGreen, keysBlue);
        }
예제 #20
0
        /// <summary>
        /// Creates a ColorModifier with 2 color values.
        /// </summary>
        /// <param name="initial">Initial color of Particles.</param>
        /// <param name="ultimate">Ultimate color of Particles.</param>
        public ColorModifier(Color initial, Color ultimate)
        {
            CurveKeyCollection keysRed = new CurveKeyCollection();

            keysRed.Add(new CurveKey(0f, (float)initial.R / 255f));
            keysRed.Add(new CurveKey(1f, (float)ultimate.R / 255f));

            CurveKeyCollection keysGreen = new CurveKeyCollection();

            keysGreen.Add(new CurveKey(0f, (float)initial.G / 255f));
            keysGreen.Add(new CurveKey(1f, (float)ultimate.G / 255f));

            CurveKeyCollection keysBlue = new CurveKeyCollection();

            keysBlue.Add(new CurveKey(0f, (float)initial.B / 255f));
            keysBlue.Add(new CurveKey(1f, (float)ultimate.B / 255f));

            Initialize(keysRed, keysGreen, keysBlue);
        }
예제 #21
0
파일: Curve.cs 프로젝트: 0x0ade/FNA-Legacy
 private Curve(CurveKeyCollection keys)
 {
     Keys = keys;
 }
예제 #22
0
파일: Curve.cs 프로젝트: 0x0ade/FNA-Legacy
 /// <summary>
 /// Constructs a curve.
 /// </summary>
 public Curve()
 {
     Keys = new CurveKeyCollection();
 }
예제 #23
0
 /// <summary>
 /// Creates a ScaleModifier with multiple scale values.
 /// </summary>
 /// <param name="keys">A CurveKeyCollection containing multiple scale/position keys.</param>
 public ScaleModifier(CurveKeyCollection keys)
 {
     Initialize(keys);
 }
예제 #24
0
 /// <summary>
 /// Constructor with multiple opacity values.
 /// </summary>
 /// <param name="keys">A cCurveKeyCollection containing multiple opacity/position keys.</param>
 public OpacityModifier(CurveKeyCollection keys)
 {
     Initialize(keys);
 }
예제 #25
0
 /// <summary>
 /// Creates a ScaleModifier with multiple scale values.
 /// </summary>
 /// <param name="keys">A CurveKeyCollection containing multiple scale/position keys.</param>
 public ScaleModifier(CurveKeyCollection keys)
 {
     Initialise(keys);
 }
예제 #26
0
            /// <summary>Compares the key collections of two curves against each other</summary>
            /// <param name="leftKeys">Keys in the key collection to the left side</param>
            /// <param name="rightKeys">Keys in the key collection to the right side</param>
            /// <returns>The rleation of the two provided key collections to each other</returns>
            private int compareKeys(CurveKeyCollection leftKeys, CurveKeyCollection rightKeys)
            {
                // Compare number of keys (int)
                int keyCountDifference = (int)rightKeys.Count - (int)leftKeys.Count;

                if (keyCountDifference != 0)
                {
                    return(keyCountDifference);
                }

                for (int index = 0; index < leftKeys.Count; ++index)
                {
                    // Compare Continuity (enum)
                    int continuityDifference =
                        (int)rightKeys[index].Continuity - (int)leftKeys[index].Continuity;
                    if (continuityDifference != 0)
                    {
                        return(continuityDifference);
                    }

                    // Compare TangentIn (float)
                    if (leftKeys[index].TangentIn > rightKeys[index].TangentIn)
                    {
                        return(+1);
                    }
                    else if (leftKeys[index].TangentIn < rightKeys[index].TangentIn)
                    {
                        return(-1);
                    }

                    // Compare Position (float)
                    if (leftKeys[index].Position > rightKeys[index].Position)
                    {
                        return(+1);
                    }
                    else if (leftKeys[index].Position < rightKeys[index].Position)
                    {
                        return(-1);
                    }

                    // Compare Value (float)
                    if (leftKeys[index].Value > rightKeys[index].Value)
                    {
                        return(+1);
                    }
                    else if (leftKeys[index].Value < rightKeys[index].Value)
                    {
                        return(-1);
                    }

                    // Compare TangentOut (float)
                    if (leftKeys[index].TangentOut > rightKeys[index].TangentOut)
                    {
                        return(+1);
                    }
                    else if (leftKeys[index].TangentOut < rightKeys[index].TangentOut)
                    {
                        return(-1);
                    }
                }

                // No differences found
                return(0);
            }
예제 #27
0
 /// <summary>
 /// Creates a new instance of <see cref="Curve"/> class.
 /// </summary>
 public Curve()
 {
     this._keys = new CurveKeyCollection();
 }
 /// <summary>
 /// Constructor with multiple opacity values.
 /// </summary>
 /// <param name="keys">A cCurveKeyCollection containing multiple opacity/position keys.</param>
 public OpacityModifier(CurveKeyCollection keys)
 {
     Initialise(keys);
 }
예제 #29
0
 public Curve()
 {
     keys = new CurveKeyCollection();
 }