Esempio n. 1
0
    protected FreeList <T> FindAllList(Predicate <T> match)
    {
        FreeList <T> results = new FreeList <T>();

        for (int i = 0; i < this._size; i++)
        {
            if (match(_items[i]))
            {
                results.Add(_items[i]);
            }
        }

        return(results);
    }
Esempio n. 2
0
        public void ExpandAndShrink()
        {
            var freeList = new FreeList <string>();

            freeList.GetValues().Length.Should().Be(4);

            var a = freeList.Add("a");
            var b = freeList.Add("b");
            var c = freeList.Add("c");
            var d = freeList.Add("d");

            freeList.GetValues().Length.Should().Be(4);

            var e = freeList.Add("e");
            var f = freeList.Add("f");
            var g = freeList.Add("g");
            var h = freeList.Add("h");

            freeList.GetValues().Length.Should().Be(8);

            foreach (var subscription in new[] { a, b, c, d, e, f, g, h })
            {
                freeList.Remove(subscription, true);
            }
            freeList.GetCount().Should().Be(0);
            freeList.GetValues().Length.Should().Be(8);

            var subscriptions = Enumerable.Range(100, 9).Select(x => freeList.Add(x.ToString())).ToArray();

            freeList.GetCount().Should().Be(9);
            freeList.GetValues().Length.Should().Be(16);

            foreach (var subscription in subscriptions)
            {
                freeList.Remove(subscription, true);
            }
            freeList.GetCount().Should().Be(0);
            freeList.GetValues().Length.Should().Be(4);
        }
Esempio n. 3
0
        public void AddRemoveTrim()
        {
            var list = new FreeList <string>();

            var a = list.Add("a");
            var b = list.Add("b");
            var c = list.Add("c");
            var d = list.Add("d");
            var e = list.Add("e");

            list.GetCount().Should().Be(5);

            var items = list.GetValues();

            items.Count().Should().Be(8);

            items.Where(x => x != null).Should().BeEquivalentTo("a", "b", "c", "d", "e");

            list.Remove(c, true);
            list.Remove(e, true);

            list.GetCount().Should().Be(3);

            list.GetValues().Where(x => x != null).Should().BeEquivalentTo("a", "b", "d");

            foreach (var i in Enumerable.Range(0, 30))
            {
                list.Add(i.ToString());                                        // 30
            }
            list.Remove(a, true);
            list.Remove(b, true);
            list.Remove(d, true);

            list.Add("30");

            list.GetValues().Where(x => x != null).Should().BeEquivalentTo(Enumerable.Range(0, 31).Select(x => x.ToString()));
        }
Esempio n. 4
0
    public void WriteToBuffers(FreeList <Vector3> v, FreeList <Vector2> u, FreeList <Color> c, FreeList <Vector3> n, FreeList <Vector4> t, FreeList <Vector2> u2)
#endif
    {
        if (mRtpVerts != null && mRtpVerts.Count > 0)
        {
            if (n == null)
            {
#if NGUI_BACKUP
                for (int i = 0, imax = mRtpVerts.Count; i < imax; ++i)
                {
                    v.Add(mRtpVerts[i]);
                    u.Add(uvs[i]);
                    c.Add(cols[i]);
                }
#else
                v.AddRange(mRtpVerts);
                u.AddRange(uvs);
                c.AddRange(cols);
#endif
            }
            else
            {
#if NGUI_BACKUP
                for (int i = 0, imax = mRtpVerts.Count; i < imax; ++i)
                {
                    v.Add(mRtpVerts[i]);
                    u.Add(uvs[i]);
                    c.Add(cols[i]);
                    n.Add(mRtpNormal);
                    t.Add(mRtpTan);
                }
#else
                v.AddRange(mRtpVerts);
                u.AddRange(uvs);
                c.AddRange(cols);

                for (int i = 0, imax = mRtpVerts.Count; i < imax; ++i)
                {
                    n.Add(mRtpNormal);
                    t.Add(mRtpTan);
                }
#endif
            }

            if (u2 != null)
            {
#if NGUI_BACKUP
                Vector4 uv2 = Vector4.zero;
#else
                Vector2 uv2 = Vector2.zero;
#endif

                for (int i = 0, imax = verts.Count; i < imax; ++i)
                {
                    uv2.x = verts[i].x;
                    uv2.y = verts[i].y;
                    u2.Add(uv2);
                }
            }

            if (onCustomWrite != null)
            {
                onCustomWrite(v, u, c, n, t, u2);
            }
        }
    }