Ejemplo n.º 1
0
 public void Construct2()
 {
     Vector4H v = new Vector4H(new Vector2H(1.0, 2.0), (Half)3.0, (Half)4.0);
     Assert.AreEqual((Half)1.0, v.X);
     Assert.AreEqual((Half)2.0, v.Y);
     Assert.AreEqual((Half)3.0, v.Z);
     Assert.AreEqual((Half)4.0, v.W);
 }
Ejemplo n.º 2
0
        public void Construct0()
        {
            Vector4H v1 = new Vector4H(1.0f, 2.0f, 3.0f, 4.0f);
            Assert.AreEqual((Half)1.0f, v1.X);
            Assert.AreEqual((Half)2.0f, v1.Y);
            Assert.AreEqual((Half)3.0f, v1.Z);
            Assert.AreEqual((Half)4.0f, v1.W);

            Vector4H v2 = new Vector4H(1.0, 2.0, 3.0, 4.0);
            Assert.AreEqual((Half)1.0, v2.X);
            Assert.AreEqual((Half)2.0, v2.Y);
            Assert.AreEqual((Half)3.0, v2.Z);
            Assert.AreEqual((Half)4.0, v2.W);
        }
Ejemplo n.º 3
0
        private void UpdateAll(Context context)
        {
            //
            // Since billboards were added or removed, all billboards are
            // rewritten so dirty billboards are automatically cleaned.
            //
            _dirtyBillboards.Clear();

            //
            // Create vertex array with appropriately sized vertex buffers
            //
            DisposeVertexArray();

            if (_billboards.Count != 0)
            {
                CreateVertexArray(context);

                //
                // Write vertex buffers
                //
                Vector3F[]      positions          = new Vector3F[_billboards.Count];
                Vector4H[]      textureCoordinates = new Vector4H[_billboards.Count];
                BlittableRGBA[] colors             = new BlittableRGBA[_billboards.Count];
                byte[]          origins            = new byte[_billboards.Count];
                Vector2H[]      pixelOffets        = new Vector2H[_billboards.Count];

                for (int i = 0; i < _billboards.Count; ++i)
                {
                    Billboard b = _billboards[i];

                    positions[i]          = b.Position.ToVector3F();
                    textureCoordinates[i] = new Vector4H(
                        b.TextureCoordinates.LowerLeft.X, b.TextureCoordinates.LowerLeft.Y,
                        b.TextureCoordinates.UpperRight.X, b.TextureCoordinates.UpperRight.Y);
                    colors[i]      = new BlittableRGBA(b.Color);
                    origins[i]     = BillboardOrigin(b);
                    pixelOffets[i] = b.PixelOffset;

                    b.VertexBufferOffset = i;
                    b.Dirty = false;
                }
                CopyBillboardsFromSystemMemory(positions, textureCoordinates, colors, origins, pixelOffets, 0, _billboards.Count);

                _rewriteBillboards = false;
            }
        }
Ejemplo n.º 4
0
        private void UpdateDirty()
        {
            // PERFORMANCE:  Sort by buffer offset
            // PERFORMANCE:  Map buffer range
            // PERFORMANCE:  Round robin multiple buffers

            Vector3F[]      positions          = new Vector3F[_dirtyBillboards.Count];
            Vector4H[]      textureCoordinates = new Vector4H[_dirtyBillboards.Count];
            BlittableRGBA[] colors             = new BlittableRGBA[_dirtyBillboards.Count];
            byte[]          origins            = new byte[_dirtyBillboards.Count];
            Vector2H[]      pixelOffets        = new Vector2H[_dirtyBillboards.Count];

            int bufferOffset         = _dirtyBillboards[0].VertexBufferOffset;
            int previousBufferOffset = bufferOffset - 1;
            int length = 0;

            for (int i = 0; i < _dirtyBillboards.Count; ++i)
            {
                Billboard b = _dirtyBillboards[i];

                if (previousBufferOffset != b.VertexBufferOffset - 1)
                {
                    CopyBillboardsFromSystemMemory(positions, textureCoordinates, colors, origins, pixelOffets, bufferOffset, length);

                    bufferOffset = b.VertexBufferOffset;
                    length       = 0;
                }

                positions[length]          = b.Position.ToVector3F();
                textureCoordinates[length] = new Vector4H(
                    b.TextureCoordinates.LowerLeft.X, b.TextureCoordinates.LowerLeft.Y,
                    b.TextureCoordinates.UpperRight.X, b.TextureCoordinates.UpperRight.Y);
                colors[length]      = new BlittableRGBA(b.Color);
                origins[length]     = BillboardOrigin(b);
                pixelOffets[length] = b.PixelOffset;
                ++length;

                previousBufferOffset = b.VertexBufferOffset;
                b.Dirty = false;
            }
            CopyBillboardsFromSystemMemory(positions, textureCoordinates, colors, origins, pixelOffets, bufferOffset, length);

            _dirtyBillboards.Clear();
        }
Ejemplo n.º 5
0
 public void XYZ()
 {
     Vector4H a = new Vector4H(1.0, 2.0, 3.0, 4.0);
     Vector3H xyz = a.XYZ;
     Assert.AreEqual((Half)1.0, xyz.X);
     Assert.AreEqual((Half)2.0, xyz.Y);
     Assert.AreEqual((Half)3.0, xyz.Z);
 }
Ejemplo n.º 6
0
 public void XY()
 {
     Vector4H a = new Vector4H(1.0, 2.0, 3.0, 4.0);
     Vector2H xy = a.XY;
     Assert.AreEqual((Half)1.0, xy.X);
     Assert.AreEqual((Half)2.0, xy.Y);
 }
Ejemplo n.º 7
0
 public void ToVector4B()
 {
     Vector4H a = new Vector4H(0.0, 1.0, 1.0, 0.0);
     Vector4B sA = a.ToVector4B();
     Assert.IsFalse(sA.X);
     Assert.IsTrue(sA.Y);
     Assert.IsTrue(sA.Z);
     Assert.IsFalse(sA.W);
 }
Ejemplo n.º 8
0
 public void ToVector4I()
 {
     Vector4H a = new Vector4H(1.0, 2.0, 3.0, 4.0);
     Vector4I sA = a.ToVector4I();
     Assert.AreEqual(1, sA.X);
     Assert.AreEqual(2, sA.Y);
     Assert.AreEqual(3, sA.Z);
     Assert.AreEqual(4, sA.W);
 }
Ejemplo n.º 9
0
 public void ToVector4D()
 {
     Vector4H a = new Vector4H(1.0, 2.0, 3.0, 4.0);
     Vector4D sA = a.ToVector4D();
     Assert.AreEqual(1.0, sA.X, 1e-7);
     Assert.AreEqual(2.0, sA.Y, 1e-7);
     Assert.AreEqual(3.0, sA.Z, 1e-7);
     Assert.AreEqual(4.0, sA.W, 1e-7);
 }
Ejemplo n.º 10
0
 public void TestToString()
 {
     CultureInfo originalCulture = Thread.CurrentThread.CurrentCulture;
     try
     {
         Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");
         Vector4H a = new Vector4H(1.23f, 2.34f, 3.45f, 4.56f);
         Assert.AreEqual("(1,230469, 2,339844, 3,449219, 4,558594)", a.ToString());
     }
     finally
     {
         Thread.CurrentThread.CurrentCulture = originalCulture;
     }
 }
Ejemplo n.º 11
0
        public void TestGetHashCode()
        {
            Vector4H a = new Vector4H(1.0f, 2.0f, 3.0f, 4.0f);
            Vector4H b = new Vector4H(4.0f, 5.0f, 6.0f, 7.0f);
            Vector4H c = new Vector4H(1.0f, 2.0f, 3.0f, 4.0f);

            Assert.AreEqual(a.GetHashCode(), c.GetHashCode());
            Assert.AreNotEqual(a.GetHashCode(), b.GetHashCode());
        }
Ejemplo n.º 12
0
        public void TestEquals()
        {
            Vector4H a = new Vector4H(1.0f, 2.0f, 3.0f, 4.0f);
            Vector4H b = new Vector4H(4.0f, 5.0f, 6.0f, 7.0f);
            Vector4H c = new Vector4H(1.0f, 2.0f, 3.0f, 4.0f);

            Assert.IsTrue(a.Equals(c));
            Assert.IsTrue(c.Equals(a));
            Assert.IsTrue(a == c);
            Assert.IsTrue(c == a);
            Assert.IsFalse(c != a);
            Assert.IsFalse(c != a);
            Assert.IsFalse(a.Equals(b));
            Assert.IsFalse(b.Equals(a));
            Assert.IsFalse(a == b);
            Assert.IsFalse(b == a);
            Assert.IsTrue(a != b);
            Assert.IsTrue(b != a);

            object objA = a;
            object objB = b;
            object objC = c;

            Assert.IsTrue(a.Equals(objA));
            Assert.IsTrue(a.Equals(objC));
            Assert.IsFalse(a.Equals(objB));

            Assert.IsTrue(objA.Equals(objC));
            Assert.IsFalse(objA.Equals(objB));

            Assert.IsFalse(a.Equals(null));
            Assert.IsFalse(a.Equals(5));
        }