Beispiel #1
0
        public void TestMapObjectSerialisation()
        {
            // compare the *'s:
            // brush -> GS -> string* -> GS -> brush -> GS -> string*

            var brush = new BlockBrush();
            var b = brush.Create(new IDGenerator(), new Box(Coordinate.Zero, Coordinate.One * 100), null, 0);
            var serialised = GenericStructure.Serialise(b);
            var toString = serialised.ToString();
            var parsed = GenericStructure.Parse(new StringReader(toString));
            var deserialised = GenericStructure.Deserialise<List<MapObject>>(parsed.First());
            var reserialised = GenericStructure.Serialise(deserialised);

            Assert.AreEqual(serialised.ToString(), reserialised.ToString());
        }
Beispiel #2
0
        public void CopyEntityTest()
        {
            var idGen = new IDGenerator();
            var box = new Box(Coordinate.One * -100, Coordinate.One * 100);

            // Create an entity with children
            var ent = new Entity(idGen.GetNextObjectID());
            ent.EntityData.Name = "Test";
            ent.EntityData.Properties.Add(new Property { Key = "key1", Value = "value1"});
            ent.EntityData.Properties.Add(new Property { Key = "key2", Value = "value2"});
            ent.EntityData.Flags = 12345;

            var solids = new BlockBrush().Create(idGen, box, null, 0);
            foreach (var mo in solids) mo.SetParent(ent);

            // Copy and reconstruct
            var gs = VmfProvider.CreateCopyStream(new List<MapObject> {ent});
            var pasted = VmfProvider.ExtractCopyStream(gs, idGen).ToList();

            // Test object
            Assert.AreEqual(1, pasted.Count);
            Assert.IsInstanceOfType(pasted[0], typeof(Entity));

            // Test entity
            var pastedEnt = (Entity) pasted[0];
            Assert.AreEqual("Test", pastedEnt.EntityData.Name);
            Assert.AreEqual(12345, pastedEnt.EntityData.Flags);

            // Test properties
            Assert.AreEqual(2, pastedEnt.EntityData.Properties.Count);
            var k1 = pastedEnt.EntityData.Properties.FirstOrDefault(x => x.Key == "key1");
            var k2 = pastedEnt.EntityData.Properties.FirstOrDefault(x => x.Key == "key1");
            Assert.IsNotNull(k1);
            Assert.IsNotNull(k2);
            Assert.AreEqual(k1.Value, "value1");
            Assert.AreEqual(k2.Value, "value1");

            // Test child
            Assert.AreEqual(1, pastedEnt.ChildCount);
            Assert.IsInstanceOfType(pastedEnt.GetChildren().ToList()[0], typeof(Solid));

            // Check number of sides, values of sides not so important
            var pastedSolid = (Solid) pastedEnt.GetChildren().ToList()[0];
            Assert.AreEqual(6, pastedSolid.Faces.Count);
        }
Beispiel #3
0
 private MapObject GetBrush(Box bounds, IDGenerator idg)
 {
     var brush = new BlockBrush();
     var ti = Document.TextureCollection.SelectedTexture;
     var texture = ti != null ? ti.GetTexture() : null;
     var created = brush.Create(idg, bounds, texture, 0).ToList();
     if (created.Count > 1)
     {
         var g = new Group(idg.GetNextObjectID());
         created.ForEach(x => x.SetParent(g));
         g.UpdateBoundingBox();
         return g;
     }
     return created.FirstOrDefault();
 }
Beispiel #4
0
 private Map GenerateInvalidSolidMap(decimal variance, decimal startLocation, decimal cubeSize)
 {
     var map = new Map();
     var block = new BlockBrush();
     var st = Coordinate.One * startLocation;
     var brush = block.Create(map.IDGenerator, new Box(st, st + Coordinate.One * cubeSize), null, 0).OfType<Solid>().First();
     var verts = brush.Faces.SelectMany(x => x.Vertices).Where(x => x.Location == st).ToList();
     verts.ForEach(x => x.Location.X -= variance);
     brush.SetParent(map.WorldSpawn);
     return map;
 }