Exemplo n.º 1
0
        public void Cultures_That_Are_Not_Invariant_Write_Invariant_Culture_Imml()
        {
            if (Thread.CurrentThread.CurrentCulture.IsReadOnly)
            {
                Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentCulture.Clone() as CultureInfo;
            }

            Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ",";
            Thread.CurrentThread.CurrentCulture.NumberFormat.NumberGroupSeparator = ".";

            try
            {
                var immlDocument = new ImmlDocument();
                immlDocument.Gravity = new Vector3(1.2345f, 2.3456f, 3.4567f);
                immlDocument.SoundSpeed = 10.34566f;

                var immlSerialiser = new ImmlSerialiser();
                var immlString = immlSerialiser.Write(immlDocument);

                var textReader = new StringReader(immlString);
                var xDoc = XDocument.Load(textReader);

                Assert.Equal("1.2345,2.3456,3.4567", xDoc.Root.Attribute(XName.Get("Gravity", string.Empty)).Value);
                Assert.Equal("10.34566", xDoc.Root.Attribute(XName.Get("SoundSpeed", string.Empty)).Value);
            }
            finally
            {
                //restore it
                Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator = CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator;
                Thread.CurrentThread.CurrentCulture.NumberFormat.NumberGroupSeparator = CultureInfo.InvariantCulture.NumberFormat.NumberGroupSeparator;
            }
        }
Exemplo n.º 2
0
        public void Reading_Invalid_Imml_Results_In_A_MarkupException()
        {
            var immlString = "<IMML Author=\"craigomatic\" Camera=\"Camera\" xmlns=\"http://schemas.vastpark.com/2007/imml/\"><THis is invalid IMML></IMML>";
            var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(immlString));

            var immlSerialiser = new ImmlSerialiser();

            try
            {
                var document = immlSerialiser.Read<ImmlDocument>(stream);
                Assert.True(false); //fail
            }
            catch (MarkupException)
            {
                Assert.True(true); //pass
            }
        }
Exemplo n.º 3
0
        void Start()
        {
            var serialiser = new ImmlSerialiser(new UnityElementFactory());
            var resourceAcquisitionService = new ResourceAcquisitionService(new InMemoryCache());
            var immersiveEnvironment       = new ImmersiveEnvironment <GameObject>(serialiser, resourceAcquisitionService, new UnityLog());

            Debug.Log("Loading scene from resource");

            var resStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("IMMLSharp.Unity.scene.imml");

            Debug.Log("Scene resource ready");

            var t = immersiveEnvironment.CreateAsync(resStream);

            t.Wait();

            immersiveEnvironment.Run(this.gameObject);

            Debug.Log("Loading complete");
        }
Exemplo n.º 4
0
        public void Using_A_Sort_Comparer_Alters_The_Order_Of_The_Attrbutes_Written_By_The_Serialiser()
        {
            var immlSerialiser = new ImmlSerialiser();
            var primitive = new Primitive();
            primitive.Behaviours.Add(Guid.NewGuid().ToString());
            primitive.CastShadows = true;
            primitive.Complexity = PrimitiveComplexity.VeryHigh;
            primitive.Name = Guid.NewGuid().ToString();
            primitive.Position = new Vector3(1, 2, 3);
            primitive.Rotation = new Vector3(4, 5, 6);
            primitive.Size = new Vector3(7, 8, 9);

            var attribSortComparer = new Mock<IComparer<string>>();
            attribSortComparer.Setup(c => c.Compare(It.IsAny<string>(), It.IsAny<string>())).Returns(new Func<string, string, int>(_NameFirstAttributeComparer));

            var immlString = immlSerialiser.Write(primitive, attribSortComparer.Object);

            var textReader = new StringReader(immlString);
            var xDoc = XDocument.Load(textReader);

            var xElementPrimitive = xDoc.Descendants(XName.Get("Primitive", immlSerialiser.Namespace)).FirstOrDefault();
            Assert.NotNull(xElementPrimitive);

            Assert.Equal("Name", xElementPrimitive.Attributes().First().Name.LocalName);
        }
Exemplo n.º 5
0
        public void Serialiser_Writes_Vector3_Values_Correctly_To_String()
        {
            var model = new Model();
            model.Position = new Vector3(float.MinValue, float.Epsilon, float.MaxValue);
            model.Rotation = new Vector3(1, 2, 3);

            var immlSerialiser = new ImmlSerialiser();
            var immlString = immlSerialiser.Write(model);

            var textReader = new StringReader(immlString);
            var xDoc = XDocument.Load(textReader);

            var xElementModel = xDoc.Descendants(XName.Get("Model", immlSerialiser.Namespace)).FirstOrDefault();
            Assert.NotNull(xElementModel);

            Assert.Equal(model.Position.ToString(), xElementModel.Attribute(XName.Get("Position")).Value);
            Assert.Equal(model.Rotation.ToString(), xElementModel.Attribute(XName.Get("Rotation")).Value);
        }
Exemplo n.º 6
0
        public void Serialiser_Writes_Material_Values_Correctly_To_String()
        {
            var model = new Model();

            var materialGroup = new MaterialGroup();
            materialGroup.Id = -1;

            var material = new Material(Color3.Red, Color3.Green, Color3.Blue, Color3.Black, 10, 1);
            materialGroup.Add(material);

            model.Add(materialGroup);

            var immlSerialiser = new ImmlSerialiser();
            var immlString = immlSerialiser.Write(model);

            var textReader = new StringReader(immlString);
            var xDoc = XDocument.Load(textReader);

            var xElementMaterial = xDoc.Descendants(XName.Get("Material", immlSerialiser.Namespace)).FirstOrDefault();
            Assert.NotNull(xElementMaterial);

            Assert.Equal(material.Ambient.ToString(), xElementMaterial.Attribute(XName.Get("Ambient")).Value);
            Assert.Equal(material.Diffuse.ToString(), xElementMaterial.Attribute(XName.Get("Diffuse")).Value);
            Assert.Equal(material.Emissive.ToString(), xElementMaterial.Attribute(XName.Get("Emissive")).Value);
            Assert.Equal(material.Specular.ToString(), xElementMaterial.Attribute(XName.Get("Specular")).Value);
            Assert.Equal(material.Power.ToString(), xElementMaterial.Attribute(XName.Get("Power")).Value);
            Assert.Equal(material.Opacity.ToString(), xElementMaterial.Attribute(XName.Get("Opacity")).Value);
        }
Exemplo n.º 7
0
        public void Serialiser_Reports_An_Error_When_A_Minor_Validation_Problem_Is_Encountered()
        {
            //the camera position attribute is invalid
            var immlString = "<IMML Author=\"craigomatic\" Camera=\"Camera\" xmlns=\"http://schemas.vastpark.com/2007/imml/\"><Camera Name=\"Camera\" Position=\"5\" /><Primitive Type=\"Box\" Size=\"1,1,1\" /></IMML>"; ;

            var immlSerialiser = new ImmlSerialiser();
            immlSerialiser.Read<ImmlDocument>(new MemoryStream(Encoding.UTF8.GetBytes(immlString)));

            Assert.NotEmpty(immlSerialiser.Errors);
            Assert.Equal(1, immlSerialiser.Errors.Count);
        }
Exemplo n.º 8
0
        public void Serialiser_Can_Write_An_ImmlDocument_With_Attributes_To_A_String()
        {
            var immlDocument = new ImmlDocument();
            immlDocument.Author = Guid.NewGuid().ToString();
            immlDocument.AnimationSpeed = (float)new Random().NextDouble();
            immlDocument.SoundSpeed = (float)new Random().NextDouble();
            immlDocument.PhysicsSpeed = (float)new Random().NextDouble();
            immlDocument.Background = Guid.NewGuid().ToString();
            immlDocument.Behaviours.Add(Guid.NewGuid().ToString());
            immlDocument.Behaviours.Add(Guid.NewGuid().ToString());
            immlDocument.Camera = Guid.NewGuid().ToString();
            immlDocument.Context = Guid.NewGuid().ToString();
            immlDocument.Description = Guid.NewGuid().ToString();
            immlDocument.GlobalIllumination = Color3.Red;
            immlDocument.Gravity = Vector3.UnitZ;
            immlDocument.HostUri = new Uri("http://www.vastpark.com");
            immlDocument.Name = Guid.NewGuid().ToString();
            immlDocument.Tags.Add("tag1");
            immlDocument.Tags.Add("tag2");

            var immlSerialiser = new ImmlSerialiser();
            var immlString = immlSerialiser.Write(immlDocument);

            Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "Author", immlDocument.Author)));
            Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "AnimationSpeed", immlDocument.AnimationSpeed)));
            Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "SoundSpeed", immlDocument.SoundSpeed)));
            Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "PhysicsSpeed", immlDocument.PhysicsSpeed)));
            Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "Background", immlDocument.Background)));
            Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "Camera", immlDocument.Camera)));
            Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "Description", immlDocument.Description)));
            Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "GlobalIllumination", immlDocument.GlobalIllumination)));
            Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "HostUri", immlDocument.HostUri)));
            Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "Name", immlDocument.Name)));
            Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "Behaviours", TypeConvert.Parse(immlDocument.Behaviours))));
            Assert.True(immlString.Contains(string.Format("{0}=\"{1}\"", "Tags", TypeConvert.Parse(immlDocument.Tags))));
        }
Exemplo n.º 9
0
        private async void _OpenFile()
        {
            if (!ApplicationView.TryUnsnap())
            {
                //TODO: handle problem
            }

            var openPicker = new FileOpenPicker();
            openPicker.FileTypeFilter.Add(".imml");
            openPicker.ViewMode = PickerViewMode.List;
            openPicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;

            var file = await openPicker.PickSingleFileAsync();

            if (file != null)
            {
                var serialiser = new ImmlSerialiser();
                var immlDocument = await serialiser.Read<ImmlDocument>(file);

                App.ViewModel.SelectedDocument = new ImmlDocumentViewModel(immlDocument);

                _ContextRenderer.Clear();

                var node = new ImmlDocumentSceneNode();
                node.Initialise(immlDocument, _DeviceManager);

                _ContextRenderer.Add(node);

                //TODO: refactor this out somewhere
                var nestedElements = immlDocument.Elements.AsRecursiveEnumerable();

                foreach (var element in nestedElements)
                {
                    if (element is Primitive)
                    {
                        var nestedNode = new PrimitiveSceneNode();
                        nestedNode.Initialise(element, _DeviceManager);

                        _ContextRenderer.Add(nestedNode);
                    }
                }
            }
        }
Exemplo n.º 10
0
        public void Serialiser_Does_Not_Report_Errors_When_The_IMML_Is_Valid()
        {
            var immlString = "<IMML Author=\"craigomatic\" Camera=\"Camera\" xmlns=\"http://schemas.vastpark.com/2007/imml/\"><Camera Name=\"Camera\" Position=\"5,5,5\" /><Primitive Type=\"Box\" Size=\"1,1,1\" /></IMML>"; ;

            var immlSerialiser = new ImmlSerialiser();
            immlSerialiser.Read<ImmlDocument>(new MemoryStream(Encoding.UTF8.GetBytes(immlString)));

            Assert.Empty(immlSerialiser.Errors);
        }
Exemplo n.º 11
0
        public void Serialiser_Creates_Object_Instances_For_All_Elements_Contained_Within_A_Document()
        {
            var bytes = EmbeddedResourceHelper.GetBytes("Imml.Test.Samples.Sample1.gz", System.Reflection.Assembly.GetExecutingAssembly());

            //unzip to get to the imml sample
            var decompressed = new MemoryStream(Ionic.Zlib.GZipStream.UncompressBuffer(bytes));
            var immlSerialiser = new ImmlSerialiser();
            var document = immlSerialiser.Read<ImmlDocument>(decompressed);

            Assert.NotEmpty(document.Elements);

            //TODO: improve the assertions to do as the method name suggests
        }
Exemplo n.º 12
0
        public void Serialiser_Correctly_Writes_Script_Elements()
        {
            var script = new Script();
            script.Value = "function main(obj, args)\r\nend";

            var immlSerialiser = new ImmlSerialiser();
            var immlString = immlSerialiser.Write(script);

            var textReader = new StringReader(immlString);
            var xDoc = XDocument.Load(textReader);

            var xElementScript = xDoc.Descendants(XName.Get("Script", immlSerialiser.Namespace)).FirstOrDefault();
            Assert.NotNull(xElementScript);

            Assert.Contains("function main(obj, args)", xElementScript.Value);
        }
Exemplo n.º 13
0
        public void Serialiser_Correctly_Reads_IMML_Containing_Script_Elements()
        {
            var immlString = "<Script Language=\"Lua\" Name=\"Script\" Source=\"\" xmlns=\"http://schemas.vastpark.com/2007/imml/\">function main(obj, args)\r\nend</Script>";
            var immlSerialiser = new ImmlSerialiser();
            var script = immlSerialiser.Read<Script>(new MemoryStream(Encoding.UTF8.GetBytes(immlString)));

            Assert.Contains("function main(obj, args)", script.Value);
        }
Exemplo n.º 14
0
        public void Serialiser_Can_Write_A_Simple_Nested_Hierarchy_To_A_String()
        {
            var immlDocument = new ImmlDocument();
            immlDocument.Author = Guid.NewGuid().ToString();

            var model = new Model();
            model.Name = Guid.NewGuid().ToString();
            model.Source = string.Format("http://{0}", Guid.NewGuid().ToString());

            var primitive = new Primitive();
            primitive.Name = Guid.NewGuid().ToString();

            var camera = new Camera();
            camera.Name = Guid.NewGuid().ToString();

            primitive.Add(camera);
            model.Add(primitive);
            immlDocument.Add(model);

            var immlSerialiser = new ImmlSerialiser();
            var immlString = immlSerialiser.Write(immlDocument);

            var textReader = new StringReader(immlString);
            var xDoc = XDocument.Load(textReader);

            //verify the model is in the correct place
            var xElementModel = xDoc.Descendants(XName.Get("Model", immlSerialiser.Namespace)).Where(e => e.Attribute(XName.Get("Name")).Value == model.Name).FirstOrDefault();
            Assert.NotNull(xElementModel);
            Assert.Equal(immlDocument.Name, xElementModel.Parent.Attribute(XName.Get("Name")).Value);

            //verify the primitive is in the correct place
            var xElementPrimitive = xDoc.Descendants(XName.Get("Primitive", immlSerialiser.Namespace)).Where(e => e.Attribute(XName.Get("Name")).Value == primitive.Name).FirstOrDefault();
            Assert.NotNull(xElementPrimitive);
            Assert.Equal(model.Name, xElementPrimitive.Parent.Attribute(XName.Get("Name")).Value);

            //verify the camera is in the correct place
            var xElementCamera = xDoc.Descendants(XName.Get("Camera", immlSerialiser.Namespace)).Where(e => e.Attribute(XName.Get("Name")).Value == camera.Name).FirstOrDefault();
            Assert.NotNull(xElementCamera);
            Assert.Equal(primitive.Name, xElementCamera.Parent.Attribute(XName.Get("Name")).Value);
        }
Exemplo n.º 15
0
        public void Serialiser_Can_Write_An_Object_To_A_String()
        {
            var primitive = new Primitive();
            primitive.Name = Guid.NewGuid().ToString();

            var immlSerialiser = new ImmlSerialiser();
            var imml = immlSerialiser.Write(primitive);

            Assert.True(imml.Contains(string.Format("Name=\"{0}\"", primitive.Name)));
        }
Exemplo n.º 16
0
        public void Serialiser_Can_Write_An_Object_To_A_Stream()
        {
            var primitive = new Primitive();
            primitive.Name = Guid.NewGuid().ToString();

            var outputStream = new MemoryStream();
            var immlSerialiser = new ImmlSerialiser();
            immlSerialiser.Write(primitive, outputStream);

            Assert.True(outputStream.Length > 0);

            var immlString = Encoding.ASCII.GetString(outputStream.ToArray());
            Assert.True(immlString.Contains(string.Format("Name=\"{0}\"", primitive.Name)));
        }
Exemplo n.º 17
0
        public void Serialiser_Can_Read_From_A_Stream()
        {
            var immlString = "<IMML Author=\"craigomatic\" Camera=\"Camera\" xmlns=\"http://schemas.vastpark.com/2007/imml/\"><Camera Name=\"Camera\" Position=\"0,0,-5\" /><Primitive Type=\"Box\" Size=\"1,1,1\" /></IMML>";
            var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(immlString));

            var immlSerialiser = new ImmlSerialiser();
            var document = immlSerialiser.Read<ImmlDocument>(stream);

            Assert.NotNull(document);
            Assert.Equal(2, document.Elements.Count);
        }
Exemplo n.º 18
0
        public void Serialiser_Does_Not_Write_Attributes_That_Are_Set_To_Their_Default_Values()
        {
            var immlDocument = new ImmlDocument();
            var immlSerialiser = new ImmlSerialiser();
            var immlString = immlSerialiser.Write(immlDocument);

            //test for some optional values
            Assert.DoesNotContain("Gravity=\"0,-9.8,0\"", immlString);
            Assert.DoesNotContain("GlobalIllumination=\"#4c4c4c\"", immlString);
            Assert.DoesNotContain("AnimationSpeed=\"1\"", immlString);
            Assert.DoesNotContain("PhysicsSpeed=\"1\"", immlString);
            Assert.DoesNotContain("SoundSpeed=\"1\"", immlString);
        }
Exemplo n.º 19
0
        public void Serialiser_Does_Not_Write_Optional_Attributes_That_Do_Not_Have_A_Value()
        {
            var immlDocument = new ImmlDocument();
            var immlSerialiser = new ImmlSerialiser();
            var immlString = immlSerialiser.Write(immlDocument);

            //test for some optional values
            Assert.DoesNotContain("Author", immlString);
            Assert.DoesNotContain("Description", immlString);
        }
Exemplo n.º 20
0
        public void Serialiser_Can_Read_Strings_From_Disk()
        {
            var tmpFile = System.IO.Path.GetTempFileName();
            var immlString = "<IMML Author=\"craigomatic\" Camera=\"Camera\" xmlns=\"http://schemas.vastpark.com/2007/imml/\"><Camera Name=\"Camera\" Position=\"0,0,-5\" /><Primitive Type=\"Box\" Size=\"1,1,1\" /></IMML>";

            try
            {
                System.IO.File.WriteAllText(tmpFile, immlString);

                var immlSerialiser = new ImmlSerialiser();
                var document = immlSerialiser.Read<ImmlDocument>(tmpFile);

                Assert.NotNull(document);
                Assert.Equal(2, document.Elements.Count);
            }
            finally
            {
                System.IO.File.Delete(tmpFile);
            }
        }