diff --git a/Assets/Runtime/Handlers/VEMLHandler/Schema/V3_1.meta b/Assets/Runtime/Handlers/VEMLHandler/Schema/V3_1.meta
new file mode 100644
index 00000000..2e0722b8
--- /dev/null
+++ b/Assets/Runtime/Handlers/VEMLHandler/Schema/V3_1.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 97b6548187d0a4345a52cd4c6a36343c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Runtime/Handlers/VEMLHandler/Schema/V3_1/VEML.cs b/Assets/Runtime/Handlers/VEMLHandler/Schema/V3_1/VEML.cs
new file mode 100644
index 00000000..bbdd42fa
--- /dev/null
+++ b/Assets/Runtime/Handlers/VEMLHandler/Schema/V3_1/VEML.cs
@@ -0,0 +1,4504 @@
+// Copyright (c) 2019-2025 Five Squared Interactive. All rights reserved.
+
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using System.Xml.Serialization;
+
+//
+// This source code was auto-generated by xsd, Version=4.8.3928.0.
+//
+
+namespace FiveSQD.WebVerse.Handlers.VEML.Schema.V3_1
+{
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1", IsNullable = false)]
+ public partial class veml
+ {
+
+ private vemlMetadata metadataField;
+
+ private vemlEnvironment environmentField;
+
+ ///
+ public vemlMetadata metadata
+ {
+ get
+ {
+ return this.metadataField;
+ }
+ set
+ {
+ this.metadataField = value;
+ }
+ }
+
+ ///
+ public vemlEnvironment environment
+ {
+ get
+ {
+ return this.environmentField;
+ }
+ set
+ {
+ this.environmentField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class vemlMetadata
+ {
+
+ private string titleField;
+
+ private string[] capabilityField;
+
+ private string[] scriptField;
+
+ private inputevent[] inputeventField;
+
+ private controlflags controlflagsField;
+
+ private synchronizationservice[] synchronizationserviceField;
+
+ ///
+ public string title
+ {
+ get
+ {
+ return this.titleField;
+ }
+ set
+ {
+ this.titleField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("capability")]
+ public string[] capability
+ {
+ get
+ {
+ return this.capabilityField;
+ }
+ set
+ {
+ this.capabilityField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("script")]
+ public string[] script
+ {
+ get
+ {
+ return this.scriptField;
+ }
+ set
+ {
+ this.scriptField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("inputevent")]
+ public inputevent[] inputevent
+ {
+ get
+ {
+ return this.inputeventField;
+ }
+ set
+ {
+ this.inputeventField = value;
+ }
+ }
+
+ ///
+ public controlflags controlflags
+ {
+ get
+ {
+ return this.controlflagsField;
+ }
+ set
+ {
+ this.controlflagsField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("synchronizationservice")]
+ public synchronizationservice[] synchronizationservice
+ {
+ get
+ {
+ return this.synchronizationserviceField;
+ }
+ set
+ {
+ this.synchronizationserviceField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class inputevent
+ {
+
+ private string inputField;
+
+ private string eventField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string input
+ {
+ get
+ {
+ return this.inputField;
+ }
+ set
+ {
+ this.inputField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string @event
+ {
+ get
+ {
+ return this.eventField;
+ }
+ set
+ {
+ this.eventField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class automobilewheel
+ {
+
+ private string wheelsubmeshField;
+
+ private float wheelradiusField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("wheel-submesh")]
+ public string wheelsubmesh
+ {
+ get
+ {
+ return this.wheelsubmeshField;
+ }
+ set
+ {
+ this.wheelsubmeshField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("wheel-radius")]
+ public float wheelradius
+ {
+ get
+ {
+ return this.wheelradiusField;
+ }
+ set
+ {
+ this.wheelradiusField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class terrainlayer
+ {
+
+ private string diffusetextureField;
+
+ private string normaltextureField;
+
+ private string masktextureField;
+
+ private string specularField;
+
+ private float metallicField;
+
+ private float smoothnessField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("diffuse-texture")]
+ public string diffusetexture
+ {
+ get
+ {
+ return this.diffusetextureField;
+ }
+ set
+ {
+ this.diffusetextureField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("normal-texture")]
+ public string normaltexture
+ {
+ get
+ {
+ return this.normaltextureField;
+ }
+ set
+ {
+ this.normaltextureField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("mask-texture")]
+ public string masktexture
+ {
+ get
+ {
+ return this.masktextureField;
+ }
+ set
+ {
+ this.masktextureField = value;
+ }
+ }
+
+ ///
+ public string specular
+ {
+ get
+ {
+ return this.specularField;
+ }
+ set
+ {
+ this.specularField = value;
+ }
+ }
+
+ ///
+ public float metallic
+ {
+ get
+ {
+ return this.metallicField;
+ }
+ set
+ {
+ this.metallicField = value;
+ }
+ }
+
+ ///
+ public float smoothness
+ {
+ get
+ {
+ return this.smoothnessField;
+ }
+ set
+ {
+ this.smoothnessField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class placementsocket
+ {
+
+ private position positionField;
+
+ private rotation rotationField;
+
+ private position connectingoffsetField;
+
+ ///
+ public position position
+ {
+ get
+ {
+ return this.positionField;
+ }
+ set
+ {
+ this.positionField = value;
+ }
+ }
+
+ ///
+ public rotation rotation
+ {
+ get
+ {
+ return this.rotationField;
+ }
+ set
+ {
+ this.rotationField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("connecting-offset")]
+ public position connectingoffset
+ {
+ get
+ {
+ return this.connectingoffsetField;
+ }
+ set
+ {
+ this.connectingoffsetField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class position
+ {
+
+ private double xField;
+
+ private double yField;
+
+ private double zField;
+
+ public position()
+ {
+ this.xField = 0D;
+ this.yField = 0D;
+ this.zField = 0D;
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(0D)]
+ public double x
+ {
+ get
+ {
+ return this.xField;
+ }
+ set
+ {
+ this.xField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(0D)]
+ public double y
+ {
+ get
+ {
+ return this.yField;
+ }
+ set
+ {
+ this.yField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(0D)]
+ public double z
+ {
+ get
+ {
+ return this.zField;
+ }
+ set
+ {
+ this.zField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class rotation
+ {
+
+ private double xField;
+
+ private double yField;
+
+ private double zField;
+
+ private double wField;
+
+ public rotation()
+ {
+ this.xField = 0D;
+ this.yField = 0D;
+ this.zField = 0D;
+ this.wField = 1D;
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(0D)]
+ public double x
+ {
+ get
+ {
+ return this.xField;
+ }
+ set
+ {
+ this.xField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(0D)]
+ public double y
+ {
+ get
+ {
+ return this.yField;
+ }
+ set
+ {
+ this.yField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(0D)]
+ public double z
+ {
+ get
+ {
+ return this.zField;
+ }
+ set
+ {
+ this.zField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(1D)]
+ public double w
+ {
+ get
+ {
+ return this.wField;
+ }
+ set
+ {
+ this.wField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(TypeName = "size-percent", Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class sizepercent
+ {
+
+ private double xField;
+
+ private double yField;
+
+ public sizepercent()
+ {
+ this.xField = 1D;
+ this.yField = 1D;
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(1D)]
+ public double x
+ {
+ get
+ {
+ return this.xField;
+ }
+ set
+ {
+ this.xField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(1D)]
+ public double y
+ {
+ get
+ {
+ return this.yField;
+ }
+ set
+ {
+ this.yField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(TypeName = "position-percent", Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class positionpercent
+ {
+
+ private double xField;
+
+ private double yField;
+
+ public positionpercent()
+ {
+ this.xField = 0D;
+ this.yField = 0D;
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(0D)]
+ public double x
+ {
+ get
+ {
+ return this.xField;
+ }
+ set
+ {
+ this.xField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(0D)]
+ public double y
+ {
+ get
+ {
+ return this.yField;
+ }
+ set
+ {
+ this.yField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class size
+ {
+
+ private double xField;
+
+ private double yField;
+
+ private double zField;
+
+ public size()
+ {
+ this.xField = 1D;
+ this.yField = 1D;
+ this.zField = 1D;
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(1D)]
+ public double x
+ {
+ get
+ {
+ return this.xField;
+ }
+ set
+ {
+ this.xField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(1D)]
+ public double y
+ {
+ get
+ {
+ return this.yField;
+ }
+ set
+ {
+ this.yField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(1D)]
+ public double z
+ {
+ get
+ {
+ return this.zField;
+ }
+ set
+ {
+ this.zField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class scale
+ {
+
+ private double xField;
+
+ private double yField;
+
+ private double zField;
+
+ public scale()
+ {
+ this.xField = 1D;
+ this.yField = 1D;
+ this.zField = 1D;
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(1D)]
+ public double x
+ {
+ get
+ {
+ return this.xField;
+ }
+ set
+ {
+ this.xField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(1D)]
+ public double y
+ {
+ get
+ {
+ return this.yField;
+ }
+ set
+ {
+ this.yField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(1D)]
+ public double z
+ {
+ get
+ {
+ return this.zField;
+ }
+ set
+ {
+ this.zField = value;
+ }
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(canvastransform))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(sizetransform))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(scaletransform))]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class basetransform
+ {
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class canvastransform : basetransform
+ {
+
+ private positionpercent positionpercentField;
+
+ private sizepercent sizepercentField;
+
+ private string alignhorizontalField;
+
+ private string alignverticalField;
+
+ private bool stretchtoparentField;
+
+ private bool stretchtoparentFieldSpecified;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("position-percent")]
+ public positionpercent positionpercent
+ {
+ get
+ {
+ return this.positionpercentField;
+ }
+ set
+ {
+ this.positionpercentField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("size-percent")]
+ public sizepercent sizepercent
+ {
+ get
+ {
+ return this.sizepercentField;
+ }
+ set
+ {
+ this.sizepercentField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("align-horizontal")]
+ public string alignhorizontal {
+ get {
+ return this.alignhorizontalField;
+ }
+ set {
+ this.alignhorizontalField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("align-vertical")]
+ public string alignvertical {
+ get {
+ return this.alignverticalField;
+ }
+ set {
+ this.alignverticalField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("stretch-to-parent")]
+ public bool stretchtoparent {
+ get {
+ return this.stretchtoparentField;
+ }
+ set {
+ this.stretchtoparentField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool stretchtoparentSpecified {
+ get {
+ return this.stretchtoparentFieldSpecified;
+ }
+ set {
+ this.stretchtoparentFieldSpecified = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class sizetransform : basetransform
+ {
+
+ private position positionField;
+
+ private rotation rotationField;
+
+ private size sizeField;
+
+ ///
+ public position position
+ {
+ get
+ {
+ return this.positionField;
+ }
+ set
+ {
+ this.positionField = value;
+ }
+ }
+
+ ///
+ public rotation rotation
+ {
+ get
+ {
+ return this.rotationField;
+ }
+ set
+ {
+ this.rotationField = value;
+ }
+ }
+
+ ///
+ public size size
+ {
+ get
+ {
+ return this.sizeField;
+ }
+ set
+ {
+ this.sizeField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class scaletransform : basetransform
+ {
+
+ private position positionField;
+
+ private rotation rotationField;
+
+ private scale scaleField;
+
+ ///
+ public position position
+ {
+ get
+ {
+ return this.positionField;
+ }
+ set
+ {
+ this.positionField = value;
+ }
+ }
+
+ ///
+ public rotation rotation
+ {
+ get
+ {
+ return this.rotationField;
+ }
+ set
+ {
+ this.rotationField = value;
+ }
+ }
+
+ ///
+ public scale scale
+ {
+ get
+ {
+ return this.scaleField;
+ }
+ set
+ {
+ this.scaleField = value;
+ }
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(waterblocker))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(airplane))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(automobile))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(water))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(voxel))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(text))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(terrain))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(light))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(image))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(input))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(button))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(html))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(canvas))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(character))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(archmesh))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(prismmesh))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(tetrahedronmesh))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(rectangularpyramidmesh))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(conemesh))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(torusmesh))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(planemesh))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(cylindermesh))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(capsulemesh))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(spheremesh))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(cubemesh))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(mesh))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(audio))]
+ [System.Xml.Serialization.XmlIncludeAttribute(typeof(container))]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class entity
+ {
+
+ private basetransform transformField;
+
+ private entity[] entity1Field;
+
+ private string synchronizerField;
+
+ private placementsocket[] placementsocketField;
+
+ private string tagField;
+
+ private string idField;
+
+ private string onloadeventField;
+
+ ///
+ public basetransform transform
+ {
+ get
+ {
+ return this.transformField;
+ }
+ set
+ {
+ this.transformField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("entity")]
+ public entity[] entity1
+ {
+ get
+ {
+ return this.entity1Field;
+ }
+ set
+ {
+ this.entity1Field = value;
+ }
+ }
+
+ ///
+ public string synchronizer
+ {
+ get
+ {
+ return this.synchronizerField;
+ }
+ set
+ {
+ this.synchronizerField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("placement-socket")]
+ public placementsocket[] placementsocket
+ {
+ get
+ {
+ return this.placementsocketField;
+ }
+ set
+ {
+ this.placementsocketField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string tag
+ {
+ get
+ {
+ return this.tagField;
+ }
+ set
+ {
+ this.tagField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string id
+ {
+ get
+ {
+ return this.idField;
+ }
+ set
+ {
+ this.idField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("on-load-event")]
+ public string onloadevent
+ {
+ get
+ {
+ return this.onloadeventField;
+ }
+ set
+ {
+ this.onloadeventField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class waterblocker : entity
+ {
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class airplane : entity
+ {
+
+ private string meshnameField;
+
+ private string[] meshresourceField;
+
+ private float massField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("mesh-name")]
+ public string meshname
+ {
+ get
+ {
+ return this.meshnameField;
+ }
+ set
+ {
+ this.meshnameField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("mesh-resource")]
+ public string[] meshresource
+ {
+ get
+ {
+ return this.meshresourceField;
+ }
+ set
+ {
+ this.meshresourceField = value;
+ }
+ }
+
+ ///
+ public float mass
+ {
+ get
+ {
+ return this.massField;
+ }
+ set
+ {
+ this.massField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class automobile : entity
+ {
+
+ private string meshnameField;
+
+ private string[] meshresourceField;
+
+ private automobilewheel[] wheelsField;
+
+ private float massField;
+
+ private string automobiletypeField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("mesh-name")]
+ public string meshname
+ {
+ get
+ {
+ return this.meshnameField;
+ }
+ set
+ {
+ this.meshnameField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("mesh-resource")]
+ public string[] meshresource
+ {
+ get
+ {
+ return this.meshresourceField;
+ }
+ set
+ {
+ this.meshresourceField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("wheels")]
+ public automobilewheel[] wheels
+ {
+ get
+ {
+ return this.wheelsField;
+ }
+ set
+ {
+ this.wheelsField = value;
+ }
+ }
+
+ ///
+ public float mass
+ {
+ get
+ {
+ return this.massField;
+ }
+ set
+ {
+ this.massField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("automobile-type")]
+ public string automobiletype
+ {
+ get
+ {
+ return this.automobiletypeField;
+ }
+ set
+ {
+ this.automobiletypeField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class water : entity
+ {
+
+ private string shallowcolorField;
+
+ private string deepcolorField;
+
+ private string specularcolorField;
+
+ private string scatteringcolorField;
+
+ private float deepstartField;
+
+ private float deependField;
+
+ private float distortionField;
+
+ private float smoothnessField;
+
+ private float numwavesField;
+
+ private float waveamplitudeField;
+
+ private float wavesteepnessField;
+
+ private float wavespeedField;
+
+ private float wavelengthField;
+
+ private float wavescaleField;
+
+ private float waveintensityField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("shallow-color")]
+ public string shallowcolor
+ {
+ get
+ {
+ return this.shallowcolorField;
+ }
+ set
+ {
+ this.shallowcolorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("deep-color")]
+ public string deepcolor
+ {
+ get
+ {
+ return this.deepcolorField;
+ }
+ set
+ {
+ this.deepcolorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("specular-color")]
+ public string specularcolor
+ {
+ get
+ {
+ return this.specularcolorField;
+ }
+ set
+ {
+ this.specularcolorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("scattering-color")]
+ public string scatteringcolor
+ {
+ get
+ {
+ return this.scatteringcolorField;
+ }
+ set
+ {
+ this.scatteringcolorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("deep-start")]
+ public float deepstart
+ {
+ get
+ {
+ return this.deepstartField;
+ }
+ set
+ {
+ this.deepstartField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("deep-end")]
+ public float deepend
+ {
+ get
+ {
+ return this.deependField;
+ }
+ set
+ {
+ this.deependField = value;
+ }
+ }
+
+ ///
+ public float distortion
+ {
+ get
+ {
+ return this.distortionField;
+ }
+ set
+ {
+ this.distortionField = value;
+ }
+ }
+
+ ///
+ public float smoothness
+ {
+ get
+ {
+ return this.smoothnessField;
+ }
+ set
+ {
+ this.smoothnessField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("num-waves")]
+ public float numwaves
+ {
+ get
+ {
+ return this.numwavesField;
+ }
+ set
+ {
+ this.numwavesField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("wave-amplitude")]
+ public float waveamplitude
+ {
+ get
+ {
+ return this.waveamplitudeField;
+ }
+ set
+ {
+ this.waveamplitudeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("wave-steepness")]
+ public float wavesteepness
+ {
+ get
+ {
+ return this.wavesteepnessField;
+ }
+ set
+ {
+ this.wavesteepnessField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("wave-speed")]
+ public float wavespeed
+ {
+ get
+ {
+ return this.wavespeedField;
+ }
+ set
+ {
+ this.wavespeedField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("wave-length")]
+ public float wavelength
+ {
+ get
+ {
+ return this.wavelengthField;
+ }
+ set
+ {
+ this.wavelengthField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("wave-scale")]
+ public float wavescale
+ {
+ get
+ {
+ return this.wavescaleField;
+ }
+ set
+ {
+ this.wavescaleField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("wave-intensity")]
+ public float waveintensity
+ {
+ get
+ {
+ return this.waveintensityField;
+ }
+ set
+ {
+ this.waveintensityField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class voxel : entity
+ {
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class text : entity
+ {
+ private string colorField;
+
+ private string text1Field;
+
+ private float fontsizeField;
+
+ private string fontField;
+
+ private bool boldField;
+
+ private bool boldFieldSpecified;
+
+ private bool italicField;
+
+ private bool italicFieldSpecified;
+
+ private bool underlineField;
+
+ private bool underlineFieldSpecified;
+
+ private bool strikethroughField;
+
+ private bool strikethroughFieldSpecified;
+
+ private string textalignhorizontalField;
+
+ private string textalignverticalField;
+
+ private string textwrapField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("color")]
+ public string color
+ {
+ get
+ {
+ return this.colorField;
+ }
+ set
+ {
+ this.colorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("text")]
+ public string text1
+ {
+ get
+ {
+ return this.text1Field;
+ }
+ set
+ {
+ this.text1Field = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("font-size")]
+ public float fontsize
+ {
+ get
+ {
+ return this.fontsizeField;
+ }
+ set
+ {
+ this.fontsizeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("font")]
+ public string font {
+ get {
+ return this.fontField;
+ }
+ set {
+ this.fontField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("bold")]
+ public bool bold {
+ get {
+ return this.boldField;
+ }
+ set {
+ this.boldField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool boldSpecified {
+ get {
+ return this.boldFieldSpecified;
+ }
+ set {
+ this.boldFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("italic")]
+ public bool italic {
+ get {
+ return this.italicField;
+ }
+ set {
+ this.italicField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool italicSpecified {
+ get {
+ return this.italicFieldSpecified;
+ }
+ set {
+ this.italicFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("underline")]
+ public bool underline {
+ get {
+ return this.underlineField;
+ }
+ set {
+ this.underlineField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool underlineSpecified {
+ get {
+ return this.underlineFieldSpecified;
+ }
+ set {
+ this.underlineFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("strikethrough")]
+ public bool strikethrough {
+ get {
+ return this.strikethroughField;
+ }
+ set {
+ this.strikethroughField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool strikethroughSpecified {
+ get {
+ return this.strikethroughFieldSpecified;
+ }
+ set {
+ this.strikethroughFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("text-align-horizontal")]
+ public string textalignhorizontal {
+ get {
+ return this.textalignhorizontalField;
+ }
+ set {
+ this.textalignhorizontalField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("text-align-vertical")]
+ public string textalignvertical {
+ get {
+ return this.textalignverticalField;
+ }
+ set {
+ this.textalignverticalField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("text-wrap")]
+ public string textwrap {
+ get {
+ return this.textwrapField;
+ }
+ set {
+ this.textwrapField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class terrain : entity
+ {
+
+ private terrainlayer[] layerField;
+
+ private string layermasksField;
+
+ private double lengthField;
+
+ private double widthField;
+
+ private double heightField;
+
+ private string heightsField;
+
+ private string typeField;
+
+ public terrain()
+ {
+ this.typeField = "heightmap";
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("layer")]
+ public terrainlayer[] layer
+ {
+ get
+ {
+ return this.layerField;
+ }
+ set
+ {
+ this.layerField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("layer-masks")]
+ public string layermasks
+ {
+ get
+ {
+ return this.layermasksField;
+ }
+ set
+ {
+ this.layermasksField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public double length
+ {
+ get
+ {
+ return this.lengthField;
+ }
+ set
+ {
+ this.lengthField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public double width
+ {
+ get
+ {
+ return this.widthField;
+ }
+ set
+ {
+ this.widthField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public double height
+ {
+ get
+ {
+ return this.heightField;
+ }
+ set
+ {
+ this.heightField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string heights
+ {
+ get
+ {
+ return this.heightsField;
+ }
+ set
+ {
+ this.heightsField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute("heightmap")]
+ public string type
+ {
+ get
+ {
+ return this.typeField;
+ }
+ set
+ {
+ this.typeField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class light : entity
+ {
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class image : entity
+ {
+
+ private string imagefileField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("image-file")]
+ public string imagefile
+ {
+ get
+ {
+ return this.imagefileField;
+ }
+ set
+ {
+ this.imagefileField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class input : entity
+ {
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class button : entity
+ {
+ private string colorField;
+
+ private string onclickeventField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("color")]
+ public string color {
+ get {
+ return this.colorField;
+ }
+ set {
+ this.colorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("on-click-event")]
+ public string onclickevent
+ {
+ get
+ {
+ return this.onclickeventField;
+ }
+ set
+ {
+ this.onclickeventField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class html : entity
+ {
+
+ private string urlField;
+
+ private string onmessageField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string url
+ {
+ get
+ {
+ return this.urlField;
+ }
+ set
+ {
+ this.urlField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("on-message")]
+ public string onmessage
+ {
+ get
+ {
+ return this.onmessageField;
+ }
+ set
+ {
+ this.onmessageField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class canvas : entity
+ {
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class character : entity
+ {
+
+ private string meshnameField;
+
+ private string[] meshresourceField;
+
+ private position meshoffsetField;
+
+ private rotation meshrotationField;
+
+ private position labeloffsetField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("mesh-name")]
+ public string meshname
+ {
+ get
+ {
+ return this.meshnameField;
+ }
+ set
+ {
+ this.meshnameField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("mesh-resource")]
+ public string[] meshresource
+ {
+ get
+ {
+ return this.meshresourceField;
+ }
+ set
+ {
+ this.meshresourceField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("mesh-offset")]
+ public position meshoffset
+ {
+ get
+ {
+ return this.meshoffsetField;
+ }
+ set
+ {
+ this.meshoffsetField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("mesh-rotation")]
+ public rotation meshrotation
+ {
+ get
+ {
+ return this.meshrotationField;
+ }
+ set
+ {
+ this.meshrotationField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("label-offset")]
+ public position labeloffset
+ {
+ get
+ {
+ return this.labeloffsetField;
+ }
+ set
+ {
+ this.labeloffsetField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class archmesh : entity
+ {
+
+ private string colorField;
+
+ ///
+ public string color
+ {
+ get
+ {
+ return this.colorField;
+ }
+ set
+ {
+ this.colorField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class prismmesh : entity
+ {
+
+ private string colorField;
+
+ ///
+ public string color
+ {
+ get
+ {
+ return this.colorField;
+ }
+ set
+ {
+ this.colorField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class tetrahedronmesh : entity
+ {
+
+ private string colorField;
+
+ ///
+ public string color
+ {
+ get
+ {
+ return this.colorField;
+ }
+ set
+ {
+ this.colorField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class rectangularpyramidmesh : entity
+ {
+
+ private string colorField;
+
+ ///
+ public string color
+ {
+ get
+ {
+ return this.colorField;
+ }
+ set
+ {
+ this.colorField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class conemesh : entity
+ {
+
+ private string colorField;
+
+ ///
+ public string color
+ {
+ get
+ {
+ return this.colorField;
+ }
+ set
+ {
+ this.colorField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class torusmesh : entity
+ {
+
+ private string colorField;
+
+ ///
+ public string color
+ {
+ get
+ {
+ return this.colorField;
+ }
+ set
+ {
+ this.colorField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class planemesh : entity
+ {
+
+ private string colorField;
+
+ ///
+ public string color
+ {
+ get
+ {
+ return this.colorField;
+ }
+ set
+ {
+ this.colorField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class cylindermesh : entity
+ {
+
+ private string colorField;
+
+ ///
+ public string color
+ {
+ get
+ {
+ return this.colorField;
+ }
+ set
+ {
+ this.colorField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class capsulemesh : entity
+ {
+
+ private string colorField;
+
+ ///
+ public string color
+ {
+ get
+ {
+ return this.colorField;
+ }
+ set
+ {
+ this.colorField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class spheremesh : entity
+ {
+
+ private string colorField;
+
+ ///
+ public string color
+ {
+ get
+ {
+ return this.colorField;
+ }
+ set
+ {
+ this.colorField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class cubemesh : entity
+ {
+
+ private string colorField;
+
+ ///
+ public string color
+ {
+ get
+ {
+ return this.colorField;
+ }
+ set
+ {
+ this.colorField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class mesh : entity
+ {
+
+ private string meshnameField;
+
+ private string[] meshresourceField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("mesh-name")]
+ public string meshname
+ {
+ get
+ {
+ return this.meshnameField;
+ }
+ set
+ {
+ this.meshnameField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("mesh-resource")]
+ public string[] meshresource
+ {
+ get
+ {
+ return this.meshresourceField;
+ }
+ set
+ {
+ this.meshresourceField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class audio : entity
+ {
+
+ private string audiofileField;
+
+ private bool autoplayField;
+
+ private bool loopField;
+
+ private int priorityField;
+
+ private float volumeField;
+
+ private float pitchField;
+
+ private float stereopanField;
+
+ public audio()
+ {
+ this.autoplayField = true;
+ this.loopField = true;
+ this.priorityField = 0;
+ this.volumeField = ((float)(1F));
+ this.pitchField = ((float)(0F));
+ this.stereopanField = ((float)(0F));
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("audio-file")]
+ public string audiofile
+ {
+ get
+ {
+ return this.audiofileField;
+ }
+ set
+ {
+ this.audiofileField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("auto-play")]
+ public bool autoplay
+ {
+ get
+ {
+ return this.autoplayField;
+ }
+ set
+ {
+ this.autoplayField = value;
+ }
+ }
+
+ ///
+ public bool loop
+ {
+ get
+ {
+ return this.loopField;
+ }
+ set
+ {
+ this.loopField = value;
+ }
+ }
+
+ ///
+ public int priority
+ {
+ get
+ {
+ return this.priorityField;
+ }
+ set
+ {
+ this.priorityField = value;
+ }
+ }
+
+ ///
+ public float volume
+ {
+ get
+ {
+ return this.volumeField;
+ }
+ set
+ {
+ this.volumeField = value;
+ }
+ }
+
+ ///
+ public float pitch
+ {
+ get
+ {
+ return this.pitchField;
+ }
+ set
+ {
+ this.pitchField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("stereo-pan")]
+ public float stereopan
+ {
+ get
+ {
+ return this.stereopanField;
+ }
+ set
+ {
+ this.stereopanField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class container : entity
+ {
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(TypeName = "lite-fog-settings", Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class litefogsettings
+ {
+
+ private bool fogenabledField;
+
+ private string colorField;
+
+ private float densityField;
+
+ public litefogsettings()
+ {
+ this.fogenabledField = false;
+ this.colorField = "gray";
+ this.densityField = ((float)(0.5F));
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("fog-enabled")]
+ [System.ComponentModel.DefaultValueAttribute(false)]
+ public bool fogenabled
+ {
+ get
+ {
+ return this.fogenabledField;
+ }
+ set
+ {
+ this.fogenabledField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute("gray")]
+ public string color
+ {
+ get
+ {
+ return this.colorField;
+ }
+ set
+ {
+ this.colorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.5")]
+ public float density
+ {
+ get
+ {
+ return this.densityField;
+ }
+ set
+ {
+ this.densityField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(TypeName = "effects-settings", Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class effectssettings
+ {
+
+ private litefogsettings litefogField;
+
+ private effectssettingsShadows shadowsField;
+
+ private bool shadowsFieldSpecified;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("lite-fog")]
+ public litefogsettings litefog
+ {
+ get
+ {
+ return this.litefogField;
+ }
+ set
+ {
+ this.litefogField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public effectssettingsShadows shadows
+ {
+ get
+ {
+ return this.shadowsField;
+ }
+ set
+ {
+ this.shadowsField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool shadowsSpecified
+ {
+ get
+ {
+ return this.shadowsFieldSpecified;
+ }
+ set
+ {
+ this.shadowsFieldSpecified = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public enum effectssettingsShadows
+ {
+
+ ///
+ off,
+
+ ///
+ on,
+
+ ///
+ preserve,
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class liteproceduralsky
+ {
+
+ private string sunentitytagField;
+
+ private bool daynightcycleenabledField;
+
+ private bool groundenabledField;
+
+ private string groundcolorField;
+
+ private float groundheightField;
+
+ private float groundfadeamountField;
+
+ private float horizonskyblendField;
+
+ private string dayhorizoncolorField;
+
+ private string dayskycolorField;
+
+ private string nighthorizoncolorField;
+
+ private string nightskycolorField;
+
+ private float horizonsaturationamountField;
+
+ private float horizonsaturationfalloffField;
+
+ private bool sunenabledField;
+
+ private float sundiameterField;
+
+ private string sunhorizoncolorField;
+
+ private string sunzenithcolorField;
+
+ private bool sunskylightingenabledField;
+
+ private float skylightingfalloffamountField;
+
+ private float skylightingfalloffintensityField;
+
+ private float sunsetintensityField;
+
+ private float sunsetradialfalloffField;
+
+ private float sunsethorizontalfalloffField;
+
+ private float sunsetverticalfalloffField;
+
+ private bool moonenabledField;
+
+ private float moondiameterField;
+
+ private string mooncolorField;
+
+ private float moonfalloffamountField;
+
+ private bool starsenabledField;
+
+ private float starsbrightnessField;
+
+ private float starsdaytimebrightnessField;
+
+ private float starshorizonfalloffField;
+
+ private float starssaturationField;
+
+ private bool proceduralstarsenabledField;
+
+ private float proceduralstarssharpnessField;
+
+ private float proceduralstarsamountField;
+
+ private bool starstextureenabledField;
+
+ private string startextureuriField;
+
+ private string startintField;
+
+ private float starscaleField;
+
+ private float starrotationspeedField;
+
+ private bool cloudsenabledField;
+
+ private string cloudstextureuriField;
+
+ private float cloudsscalexField;
+
+ private float cloudsscaleyField;
+
+ private float cloudsspeedxField;
+
+ private float cloudsspeedyField;
+
+ private float cloudinessField;
+
+ private float cloudsopacityField;
+
+ private float cloudssharpnessField;
+
+ private float cloudsshadingintensityField;
+
+ private float cloudszenithfalloffField;
+
+ private int cloudsiterationsField;
+
+ private float cloudsgainField;
+
+ private int cloudslacunarityField;
+
+ private string cloudsdaycolorField;
+
+ private string cloudsnightcolorField;
+
+ public liteproceduralsky()
+ {
+ this.daynightcycleenabledField = true;
+ this.groundenabledField = true;
+ this.groundcolorField = "#07070700";
+ this.groundheightField = ((float)(-0.02F));
+ this.groundfadeamountField = ((float)(0.02F));
+ this.horizonskyblendField = ((float)(0.579F));
+ this.dayhorizoncolorField = "#448bc5ff";
+ this.dayskycolorField = "#08124100";
+ this.nighthorizoncolorField = "#07050d00";
+ this.nightskycolorField = "03010300";
+ this.horizonsaturationamountField = ((float)(0.894F));
+ this.horizonsaturationfalloffField = ((float)(4.45F));
+ this.sunenabledField = true;
+ this.sundiameterField = ((float)(2F));
+ this.sunhorizoncolorField = "color(155 72 33 0)";
+ this.sunzenithcolorField = "color(158 129 58 0)";
+ this.sunskylightingenabledField = true;
+ this.skylightingfalloffamountField = ((float)(10F));
+ this.skylightingfalloffintensityField = ((float)(1F));
+ this.sunsetintensityField = ((float)(0.3F));
+ this.sunsetradialfalloffField = ((float)(0.1F));
+ this.sunsethorizontalfalloffField = ((float)(0.6F));
+ this.sunsetverticalfalloffField = ((float)(0.5F));
+ this.moonenabledField = true;
+ this.moondiameterField = ((float)(2F));
+ this.mooncolorField = "#abb9bf00";
+ this.moonfalloffamountField = ((float)(60F));
+ this.starsenabledField = true;
+ this.starsbrightnessField = ((float)(0.85F));
+ this.starsdaytimebrightnessField = ((float)(0.1F));
+ this.starshorizonfalloffField = ((float)(0F));
+ this.starssaturationField = ((float)(0.3F));
+ this.proceduralstarsenabledField = true;
+ this.proceduralstarssharpnessField = ((float)(1F));
+ this.proceduralstarsamountField = ((float)(1F));
+ this.starstextureenabledField = true;
+ this.startintField = "#ffffff00";
+ this.starscaleField = ((float)(0.5F));
+ this.starrotationspeedField = ((float)(0.25F));
+ this.cloudsenabledField = true;
+ this.cloudsscalexField = ((float)(2F));
+ this.cloudsscaleyField = ((float)(1F));
+ this.cloudsspeedxField = ((float)(0.2F));
+ this.cloudsspeedyField = ((float)(0.3F));
+ this.cloudinessField = ((float)(0.279F));
+ this.cloudsopacityField = ((float)(1F));
+ this.cloudssharpnessField = ((float)(0.8F));
+ this.cloudsshadingintensityField = ((float)(0.8F));
+ this.cloudszenithfalloffField = ((float)(0.339F));
+ this.cloudsiterationsField = 3;
+ this.cloudsgainField = ((float)(0.5F));
+ this.cloudslacunarityField = 2;
+ this.cloudsdaycolorField = "#d7dde7";
+ this.cloudsnightcolorField = "#7d616f";
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("sun-entity-tag")]
+ public string sunentitytag
+ {
+ get
+ {
+ return this.sunentitytagField;
+ }
+ set
+ {
+ this.sunentitytagField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("day-night-cycle-enabled")]
+ [System.ComponentModel.DefaultValueAttribute(true)]
+ public bool daynightcycleenabled
+ {
+ get
+ {
+ return this.daynightcycleenabledField;
+ }
+ set
+ {
+ this.daynightcycleenabledField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("ground-enabled")]
+ [System.ComponentModel.DefaultValueAttribute(true)]
+ public bool groundenabled
+ {
+ get
+ {
+ return this.groundenabledField;
+ }
+ set
+ {
+ this.groundenabledField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("ground-color")]
+ [System.ComponentModel.DefaultValueAttribute("#07070700")]
+ public string groundcolor
+ {
+ get
+ {
+ return this.groundcolorField;
+ }
+ set
+ {
+ this.groundcolorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("ground-height")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "-0.02")]
+ public float groundheight
+ {
+ get
+ {
+ return this.groundheightField;
+ }
+ set
+ {
+ this.groundheightField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("ground-fade-amount")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.02")]
+ public float groundfadeamount
+ {
+ get
+ {
+ return this.groundfadeamountField;
+ }
+ set
+ {
+ this.groundfadeamountField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("horizon-sky-blend")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.579")]
+ public float horizonskyblend
+ {
+ get
+ {
+ return this.horizonskyblendField;
+ }
+ set
+ {
+ this.horizonskyblendField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("day-horizon-color")]
+ [System.ComponentModel.DefaultValueAttribute("#448bc5ff")]
+ public string dayhorizoncolor
+ {
+ get
+ {
+ return this.dayhorizoncolorField;
+ }
+ set
+ {
+ this.dayhorizoncolorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("day-sky-color")]
+ [System.ComponentModel.DefaultValueAttribute("#08124100")]
+ public string dayskycolor
+ {
+ get
+ {
+ return this.dayskycolorField;
+ }
+ set
+ {
+ this.dayskycolorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("night-horizon-color")]
+ [System.ComponentModel.DefaultValueAttribute("#07050d00")]
+ public string nighthorizoncolor
+ {
+ get
+ {
+ return this.nighthorizoncolorField;
+ }
+ set
+ {
+ this.nighthorizoncolorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("night-sky-color")]
+ [System.ComponentModel.DefaultValueAttribute("03010300")]
+ public string nightskycolor
+ {
+ get
+ {
+ return this.nightskycolorField;
+ }
+ set
+ {
+ this.nightskycolorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("horizon-saturation-amount")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.894")]
+ public float horizonsaturationamount
+ {
+ get
+ {
+ return this.horizonsaturationamountField;
+ }
+ set
+ {
+ this.horizonsaturationamountField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("horizon-saturation-falloff")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "4.45")]
+ public float horizonsaturationfalloff
+ {
+ get
+ {
+ return this.horizonsaturationfalloffField;
+ }
+ set
+ {
+ this.horizonsaturationfalloffField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("sun-enabled")]
+ [System.ComponentModel.DefaultValueAttribute(true)]
+ public bool sunenabled
+ {
+ get
+ {
+ return this.sunenabledField;
+ }
+ set
+ {
+ this.sunenabledField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("sun-diameter")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "2")]
+ public float sundiameter
+ {
+ get
+ {
+ return this.sundiameterField;
+ }
+ set
+ {
+ this.sundiameterField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("sun-horizon-color")]
+ [System.ComponentModel.DefaultValueAttribute("color(155 72 33 0)")]
+ public string sunhorizoncolor
+ {
+ get
+ {
+ return this.sunhorizoncolorField;
+ }
+ set
+ {
+ this.sunhorizoncolorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("sun-zenith-color")]
+ [System.ComponentModel.DefaultValueAttribute("color(158 129 58 0)")]
+ public string sunzenithcolor
+ {
+ get
+ {
+ return this.sunzenithcolorField;
+ }
+ set
+ {
+ this.sunzenithcolorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("sun-sky-lighting-enabled")]
+ [System.ComponentModel.DefaultValueAttribute(true)]
+ public bool sunskylightingenabled
+ {
+ get
+ {
+ return this.sunskylightingenabledField;
+ }
+ set
+ {
+ this.sunskylightingenabledField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("sky-lighting-falloff-amount")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "10")]
+ public float skylightingfalloffamount
+ {
+ get
+ {
+ return this.skylightingfalloffamountField;
+ }
+ set
+ {
+ this.skylightingfalloffamountField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("sky-lighting-falloff-intensity")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "1")]
+ public float skylightingfalloffintensity
+ {
+ get
+ {
+ return this.skylightingfalloffintensityField;
+ }
+ set
+ {
+ this.skylightingfalloffintensityField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("sunset-intensity")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.3")]
+ public float sunsetintensity
+ {
+ get
+ {
+ return this.sunsetintensityField;
+ }
+ set
+ {
+ this.sunsetintensityField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("sunset-radial-falloff")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.1")]
+ public float sunsetradialfalloff
+ {
+ get
+ {
+ return this.sunsetradialfalloffField;
+ }
+ set
+ {
+ this.sunsetradialfalloffField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("sunset-horizontal-falloff")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.6")]
+ public float sunsethorizontalfalloff
+ {
+ get
+ {
+ return this.sunsethorizontalfalloffField;
+ }
+ set
+ {
+ this.sunsethorizontalfalloffField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("sunset-vertical-falloff")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.5")]
+ public float sunsetverticalfalloff
+ {
+ get
+ {
+ return this.sunsetverticalfalloffField;
+ }
+ set
+ {
+ this.sunsetverticalfalloffField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("moon-enabled")]
+ [System.ComponentModel.DefaultValueAttribute(true)]
+ public bool moonenabled
+ {
+ get
+ {
+ return this.moonenabledField;
+ }
+ set
+ {
+ this.moonenabledField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("moon-diameter")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "2")]
+ public float moondiameter
+ {
+ get
+ {
+ return this.moondiameterField;
+ }
+ set
+ {
+ this.moondiameterField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("moon-color")]
+ [System.ComponentModel.DefaultValueAttribute("#abb9bf00")]
+ public string mooncolor
+ {
+ get
+ {
+ return this.mooncolorField;
+ }
+ set
+ {
+ this.mooncolorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("moon-falloff-amount")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "60")]
+ public float moonfalloffamount
+ {
+ get
+ {
+ return this.moonfalloffamountField;
+ }
+ set
+ {
+ this.moonfalloffamountField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("stars-enabled")]
+ [System.ComponentModel.DefaultValueAttribute(true)]
+ public bool starsenabled
+ {
+ get
+ {
+ return this.starsenabledField;
+ }
+ set
+ {
+ this.starsenabledField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("stars-brightness")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.85")]
+ public float starsbrightness
+ {
+ get
+ {
+ return this.starsbrightnessField;
+ }
+ set
+ {
+ this.starsbrightnessField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("stars-daytime-brightness")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.1")]
+ public float starsdaytimebrightness
+ {
+ get
+ {
+ return this.starsdaytimebrightnessField;
+ }
+ set
+ {
+ this.starsdaytimebrightnessField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("stars-horizon-falloff")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0")]
+ public float starshorizonfalloff
+ {
+ get
+ {
+ return this.starshorizonfalloffField;
+ }
+ set
+ {
+ this.starshorizonfalloffField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("stars-saturation")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.3")]
+ public float starssaturation
+ {
+ get
+ {
+ return this.starssaturationField;
+ }
+ set
+ {
+ this.starssaturationField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("procedural-stars-enabled")]
+ [System.ComponentModel.DefaultValueAttribute(true)]
+ public bool proceduralstarsenabled
+ {
+ get
+ {
+ return this.proceduralstarsenabledField;
+ }
+ set
+ {
+ this.proceduralstarsenabledField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("procedural-stars-sharpness")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "1")]
+ public float proceduralstarssharpness
+ {
+ get
+ {
+ return this.proceduralstarssharpnessField;
+ }
+ set
+ {
+ this.proceduralstarssharpnessField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("procedural-stars-amount")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "1")]
+ public float proceduralstarsamount
+ {
+ get
+ {
+ return this.proceduralstarsamountField;
+ }
+ set
+ {
+ this.proceduralstarsamountField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("stars-texture-enabled")]
+ [System.ComponentModel.DefaultValueAttribute(true)]
+ public bool starstextureenabled
+ {
+ get
+ {
+ return this.starstextureenabledField;
+ }
+ set
+ {
+ this.starstextureenabledField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("star-texture-uri")]
+ public string startextureuri
+ {
+ get
+ {
+ return this.startextureuriField;
+ }
+ set
+ {
+ this.startextureuriField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("star-tint")]
+ [System.ComponentModel.DefaultValueAttribute("#ffffff00")]
+ public string startint
+ {
+ get
+ {
+ return this.startintField;
+ }
+ set
+ {
+ this.startintField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("star-scale")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.5")]
+ public float starscale
+ {
+ get
+ {
+ return this.starscaleField;
+ }
+ set
+ {
+ this.starscaleField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("star-rotation-speed")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.25")]
+ public float starrotationspeed
+ {
+ get
+ {
+ return this.starrotationspeedField;
+ }
+ set
+ {
+ this.starrotationspeedField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("clouds-enabled")]
+ [System.ComponentModel.DefaultValueAttribute(true)]
+ public bool cloudsenabled
+ {
+ get
+ {
+ return this.cloudsenabledField;
+ }
+ set
+ {
+ this.cloudsenabledField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("clouds-texture-uri")]
+ public string cloudstextureuri
+ {
+ get
+ {
+ return this.cloudstextureuriField;
+ }
+ set
+ {
+ this.cloudstextureuriField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("clouds-scale-x")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "2")]
+ public float cloudsscalex
+ {
+ get
+ {
+ return this.cloudsscalexField;
+ }
+ set
+ {
+ this.cloudsscalexField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("clouds-scale-y")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "1")]
+ public float cloudsscaley
+ {
+ get
+ {
+ return this.cloudsscaleyField;
+ }
+ set
+ {
+ this.cloudsscaleyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("clouds-speed-x")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.2")]
+ public float cloudsspeedx
+ {
+ get
+ {
+ return this.cloudsspeedxField;
+ }
+ set
+ {
+ this.cloudsspeedxField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("clouds-speed-y")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.3")]
+ public float cloudsspeedy
+ {
+ get
+ {
+ return this.cloudsspeedyField;
+ }
+ set
+ {
+ this.cloudsspeedyField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.279")]
+ public float cloudiness
+ {
+ get
+ {
+ return this.cloudinessField;
+ }
+ set
+ {
+ this.cloudinessField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("clouds-opacity")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "1")]
+ public float cloudsopacity
+ {
+ get
+ {
+ return this.cloudsopacityField;
+ }
+ set
+ {
+ this.cloudsopacityField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("clouds-sharpness")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.8")]
+ public float cloudssharpness
+ {
+ get
+ {
+ return this.cloudssharpnessField;
+ }
+ set
+ {
+ this.cloudssharpnessField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("clouds-shading-intensity")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.8")]
+ public float cloudsshadingintensity
+ {
+ get
+ {
+ return this.cloudsshadingintensityField;
+ }
+ set
+ {
+ this.cloudsshadingintensityField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("clouds-zenith-falloff")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.339")]
+ public float cloudszenithfalloff
+ {
+ get
+ {
+ return this.cloudszenithfalloffField;
+ }
+ set
+ {
+ this.cloudszenithfalloffField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("clouds-iterations")]
+ [System.ComponentModel.DefaultValueAttribute(3)]
+ public int cloudsiterations
+ {
+ get
+ {
+ return this.cloudsiterationsField;
+ }
+ set
+ {
+ this.cloudsiterationsField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("clouds-gain")]
+ [System.ComponentModel.DefaultValueAttribute(typeof(float), "0.5")]
+ public float cloudsgain
+ {
+ get
+ {
+ return this.cloudsgainField;
+ }
+ set
+ {
+ this.cloudsgainField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("clouds-lacunarity")]
+ [System.ComponentModel.DefaultValueAttribute(2)]
+ public int cloudslacunarity
+ {
+ get
+ {
+ return this.cloudslacunarityField;
+ }
+ set
+ {
+ this.cloudslacunarityField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("clouds-day-color")]
+ [System.ComponentModel.DefaultValueAttribute("#d7dde7")]
+ public string cloudsdaycolor
+ {
+ get
+ {
+ return this.cloudsdaycolorField;
+ }
+ set
+ {
+ this.cloudsdaycolorField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute("clouds-night-color")]
+ [System.ComponentModel.DefaultValueAttribute("#7d616f")]
+ public string cloudsnightcolor
+ {
+ get
+ {
+ return this.cloudsnightcolorField;
+ }
+ set
+ {
+ this.cloudsnightcolorField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class background
+ {
+
+ private object itemField;
+
+ private ItemChoiceType itemElementNameField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("color", typeof(string))]
+ [System.Xml.Serialization.XmlElementAttribute("lite-procedural-sky", typeof(liteproceduralsky))]
+ [System.Xml.Serialization.XmlElementAttribute("panorama", typeof(string))]
+ [System.Xml.Serialization.XmlChoiceIdentifierAttribute("ItemElementName")]
+ public object Item
+ {
+ get
+ {
+ return this.itemField;
+ }
+ set
+ {
+ this.itemField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public ItemChoiceType ItemElementName
+ {
+ get
+ {
+ return this.itemElementNameField;
+ }
+ set
+ {
+ this.itemElementNameField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1", IncludeInSchema = false)]
+ public enum ItemChoiceType
+ {
+
+ ///
+ color,
+
+ ///
+ [System.Xml.Serialization.XmlEnumAttribute("lite-procedural-sky")]
+ liteproceduralsky,
+
+ ///
+ panorama,
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class synchronizationservice
+ {
+
+ private string typeField;
+
+ private string addressField;
+
+ private string idField;
+
+ private string sessionField;
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string type
+ {
+ get
+ {
+ return this.typeField;
+ }
+ set
+ {
+ this.typeField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string address
+ {
+ get
+ {
+ return this.addressField;
+ }
+ set
+ {
+ this.addressField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string id
+ {
+ get
+ {
+ return this.idField;
+ }
+ set
+ {
+ this.idField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlAttributeAttribute()]
+ public string session
+ {
+ get
+ {
+ return this.sessionField;
+ }
+ set
+ {
+ this.sessionField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class controlflags
+ {
+
+ private string leftvrpointerField;
+
+ private string rightvrpointerField;
+
+ private bool leftvrpokerField;
+
+ private bool leftvrpokerFieldSpecified;
+
+ private bool rightvrpokerField;
+
+ private bool rightvrpokerFieldSpecified;
+
+ private bool lefthandinteractionField;
+
+ private bool lefthandinteractionFieldSpecified;
+
+ private bool righthandinteractionField;
+
+ private bool righthandinteractionFieldSpecified;
+
+ private string turnlocomotionField;
+
+ private bool joystickmotionField;
+
+ private bool joystickmotionFieldSpecified;
+
+ private bool leftgrabmoveField;
+
+ private bool leftgrabmoveFieldSpecified;
+
+ private bool rightgrabmoveField;
+
+ private bool rightgrabmoveFieldSpecified;
+
+ private bool twohandedgrabmoveField;
+
+ private bool twohandedgrabmoveFieldSpecified;
+
+ private bool gravityenabledField;
+
+ private bool gravityenabledFieldSpecified;
+
+ private bool wasdmotionenabledField;
+
+ private bool wasdmotionenabledFieldSpecified;
+
+ private bool mouselookenabledField;
+
+ private bool mouselookenabledFieldSpecified;
+
+ private string avatarentityField;
+
+ private bool jumpenabledField;
+
+ private bool jumpenabledFieldSpecified;
+
+ private float movementspeedField;
+
+ private bool movementspeedFieldSpecified;
+
+ private float lookspeedField;
+
+ private bool lookspeedFieldSpecified;
+
+ private string rigoffsetField;
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("left-vr-pointer")]
+ public string leftvrpointer
+ {
+ get
+ {
+ return this.leftvrpointerField;
+ }
+ set
+ {
+ this.leftvrpointerField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("right-vr-pointer")]
+ public string rightvrpointer
+ {
+ get
+ {
+ return this.rightvrpointerField;
+ }
+ set
+ {
+ this.rightvrpointerField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("left-vr-poker")]
+ public bool leftvrpoker
+ {
+ get
+ {
+ return this.leftvrpokerField;
+ }
+ set
+ {
+ this.leftvrpokerField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool leftvrpokerSpecified
+ {
+ get
+ {
+ return this.leftvrpokerFieldSpecified;
+ }
+ set
+ {
+ this.leftvrpokerFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("right-vr-poker")]
+ public bool rightvrpoker
+ {
+ get
+ {
+ return this.rightvrpokerField;
+ }
+ set
+ {
+ this.rightvrpokerField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool rightvrpokerSpecified
+ {
+ get
+ {
+ return this.rightvrpokerFieldSpecified;
+ }
+ set
+ {
+ this.rightvrpokerFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("left-hand-interaction")]
+ public bool lefthandinteraction
+ {
+ get
+ {
+ return this.lefthandinteractionField;
+ }
+ set
+ {
+ this.lefthandinteractionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool lefthandinteractionSpecified
+ {
+ get
+ {
+ return this.lefthandinteractionFieldSpecified;
+ }
+ set
+ {
+ this.lefthandinteractionFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("right-hand-interaction")]
+ public bool righthandinteraction
+ {
+ get
+ {
+ return this.righthandinteractionField;
+ }
+ set
+ {
+ this.righthandinteractionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool righthandinteractionSpecified
+ {
+ get
+ {
+ return this.righthandinteractionFieldSpecified;
+ }
+ set
+ {
+ this.righthandinteractionFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("turn-locomotion")]
+ public string turnlocomotion
+ {
+ get
+ {
+ return this.turnlocomotionField;
+ }
+ set
+ {
+ this.turnlocomotionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("joystick-motion")]
+ public bool joystickmotion
+ {
+ get
+ {
+ return this.joystickmotionField;
+ }
+ set
+ {
+ this.joystickmotionField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool joystickmotionSpecified
+ {
+ get
+ {
+ return this.joystickmotionFieldSpecified;
+ }
+ set
+ {
+ this.joystickmotionFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("left-grab-move")]
+ public bool leftgrabmove
+ {
+ get
+ {
+ return this.leftgrabmoveField;
+ }
+ set
+ {
+ this.leftgrabmoveField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool leftgrabmoveSpecified
+ {
+ get
+ {
+ return this.leftgrabmoveFieldSpecified;
+ }
+ set
+ {
+ this.leftgrabmoveFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("right-grab-move")]
+ public bool rightgrabmove
+ {
+ get
+ {
+ return this.rightgrabmoveField;
+ }
+ set
+ {
+ this.rightgrabmoveField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool rightgrabmoveSpecified
+ {
+ get
+ {
+ return this.rightgrabmoveFieldSpecified;
+ }
+ set
+ {
+ this.rightgrabmoveFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("two-handed-grab-move")]
+ public bool twohandedgrabmove
+ {
+ get
+ {
+ return this.twohandedgrabmoveField;
+ }
+ set
+ {
+ this.twohandedgrabmoveField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool twohandedgrabmoveSpecified
+ {
+ get
+ {
+ return this.twohandedgrabmoveFieldSpecified;
+ }
+ set
+ {
+ this.twohandedgrabmoveFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("gravity-enabled")]
+ public bool gravityenabled
+ {
+ get
+ {
+ return this.gravityenabledField;
+ }
+ set
+ {
+ this.gravityenabledField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool gravityenabledSpecified
+ {
+ get
+ {
+ return this.gravityenabledFieldSpecified;
+ }
+ set
+ {
+ this.gravityenabledFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("wasd-motion-enabled")]
+ public bool wasdmotionenabled
+ {
+ get
+ {
+ return this.wasdmotionenabledField;
+ }
+ set
+ {
+ this.wasdmotionenabledField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool wasdmotionenabledSpecified
+ {
+ get
+ {
+ return this.wasdmotionenabledFieldSpecified;
+ }
+ set
+ {
+ this.wasdmotionenabledFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("mouse-look-enabled")]
+ public bool mouselookenabled
+ {
+ get
+ {
+ return this.mouselookenabledField;
+ }
+ set
+ {
+ this.mouselookenabledField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool mouselookenabledSpecified
+ {
+ get
+ {
+ return this.mouselookenabledFieldSpecified;
+ }
+ set
+ {
+ this.mouselookenabledFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("avatar-entity")]
+ public string avatarentity
+ {
+ get
+ {
+ return this.avatarentityField;
+ }
+ set
+ {
+ this.avatarentityField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("jump-enabled")]
+ public bool jumpenabled
+ {
+ get
+ {
+ return this.jumpenabledField;
+ }
+ set
+ {
+ this.jumpenabledField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool jumpenabledSpecified
+ {
+ get
+ {
+ return this.jumpenabledFieldSpecified;
+ }
+ set
+ {
+ this.jumpenabledFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("movement-speed")]
+ public float movementspeed
+ {
+ get
+ {
+ return this.movementspeedField;
+ }
+ set
+ {
+ this.movementspeedField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool movementspeedSpecified
+ {
+ get
+ {
+ return this.movementspeedFieldSpecified;
+ }
+ set
+ {
+ this.movementspeedFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("look-speed")]
+ public float lookspeed
+ {
+ get
+ {
+ return this.lookspeedField;
+ }
+ set
+ {
+ this.lookspeedField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool lookspeedSpecified
+ {
+ get
+ {
+ return this.lookspeedFieldSpecified;
+ }
+ set
+ {
+ this.lookspeedFieldSpecified = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("rig-offset")]
+ public string rigoffset {
+ get {
+ return this.rigoffsetField;
+ }
+ set {
+ this.rigoffsetField = value;
+ }
+ }
+ }
+
+ ///
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.fivesqd.com/schemas/veml/3.1")]
+ public partial class vemlEnvironment
+ {
+
+ private background backgroundField;
+
+ private effectssettings effectsField;
+
+ private entity[] entityField;
+
+ ///
+ public background background
+ {
+ get
+ {
+ return this.backgroundField;
+ }
+ set
+ {
+ this.backgroundField = value;
+ }
+ }
+
+ ///
+ public effectssettings effects
+ {
+ get
+ {
+ return this.effectsField;
+ }
+ set
+ {
+ this.effectsField = value;
+ }
+ }
+
+ ///
+ [System.Xml.Serialization.XmlElementAttribute("entity")]
+ public entity[] entity
+ {
+ get
+ {
+ return this.entityField;
+ }
+ set
+ {
+ this.entityField = value;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Runtime/Handlers/VEMLHandler/Schema/V3_1/VEML.cs.meta b/Assets/Runtime/Handlers/VEMLHandler/Schema/V3_1/VEML.cs.meta
new file mode 100644
index 00000000..b1ccdc39
--- /dev/null
+++ b/Assets/Runtime/Handlers/VEMLHandler/Schema/V3_1/VEML.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 701287b37af79be41a1c5e20fd2c7eb6
\ No newline at end of file
diff --git a/Assets/Runtime/Handlers/VEMLHandler/Scripts/VEMLHandler.cs b/Assets/Runtime/Handlers/VEMLHandler/Scripts/VEMLHandler.cs
index 8880c887..498da9e9 100644
--- a/Assets/Runtime/Handlers/VEMLHandler/Scripts/VEMLHandler.cs
+++ b/Assets/Runtime/Handlers/VEMLHandler/Scripts/VEMLHandler.cs
@@ -12,7 +12,7 @@
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
-using FiveSQD.WebVerse.Handlers.VEML.Schema.V3_0;
+using FiveSQD.WebVerse.Handlers.VEML.Schema.V3_1;
using FiveSQD.WebVerse.VOSSynchronization;
using FiveSQD.StraightFour.Utilities;
using FiveSQD.StraightFour.Entity;
@@ -28,7 +28,7 @@ public class VEMLHandler : BaseHandler
///
/// Enumeration for a VEML version number.
///
- public enum VEMLVersion { Unknown, v1_0, v1_1, v1_2, v1_3, v2_0, v2_1, V2_2, V2_3, V2_4, V3_0 }
+ public enum VEMLVersion { Unknown, v1_0, v1_1, v1_2, v1_3, v2_0, v2_1, V2_2, V2_3, V2_4, V3_0, V3_1 }
///
/// Reference to the WebVerse runtime.
@@ -87,7 +87,7 @@ public void GetWorldName(string resourceURI, Action onComplete)
{
Action onDownloaded = () =>
{
- Schema.V3_0.veml veml = LoadVEML(Path.Combine(runtime.fileHandler.fileDirectory,
+ Schema.V3_1.veml veml = LoadVEML(Path.Combine(runtime.fileHandler.fileDirectory,
FileHandler.ToFileURI(resourceURI)));
if (veml == null)
@@ -123,7 +123,7 @@ public void LoadVEMLDocumentIntoWorld(string resourceURI, Action onComplet
{
Action onDownloaded = () =>
{
- Schema.V3_0.veml veml = LoadVEML(Path.Combine(runtime.fileHandler.fileDirectory,
+ Schema.V3_1.veml veml = LoadVEML(Path.Combine(runtime.fileHandler.fileDirectory,
FileHandler.ToFileURI(resourceURI)));
if (veml == null)
@@ -209,31 +209,34 @@ public void DownloadVEML(string uri, Action onDownloaded)
///
/// Path to load the document from.
/// A loaded VEML class, or null.
- public Schema.V3_0.veml LoadVEML(string path)
+ public Schema.V3_1.veml LoadVEML(string path)
{
byte[] rawData = System.IO.File.ReadAllBytes(path);
- //VEMLVersion version = VEMLVersion.V3_0;
- Schema.V3_0.veml veml = null;
+ //VEMLVersion version = VEMLVersion.V3_1;
+ Schema.V3_1.veml veml = null;
try
{
- XmlSerializer ser = new XmlSerializer(typeof(Schema.V3_0.veml));
- TextReader reader = new StringReader(VEMLUtilities.FullyNotateVEML3_0(System.Text.Encoding.UTF8.GetString(rawData)));
+ XmlSerializer ser = new XmlSerializer(typeof(Schema.V3_1.veml));
+ TextReader reader = new StringReader(VEMLUtilities.FullyNotateVEML3_1(System.Text.Encoding.UTF8.GetString(rawData)));
XmlReader xmlReader = XmlReader.Create(reader);
- // Attempt deserialization using v3.0 (latest) of the schema. Old XML will be converted
+ // Attempt deserialization using v3.1 (latest) of the schema. Old XML will be converted
// to current version before being deserialized.
- if (ser.CanDeserialize(xmlReader) && !VEMLUtilities.IsPreVEML3_0(System.Text.Encoding.UTF8.GetString(rawData)))
+ if (ser.CanDeserialize(xmlReader) && !VEMLUtilities.IsPreVEML3_1(System.Text.Encoding.UTF8.GetString(rawData)))
{
- //version = VEMLVersion.V3_0;
- Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v3.0");
- veml = (Schema.V3_0.veml) ser.Deserialize(xmlReader);
+ //version = VEMLVersion.V3_1;
+ Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v3.1");
+ veml = (Schema.V3_1.veml) ser.Deserialize(xmlReader);
}
- // Attempt deserialization using v2.4, v2.3, v2.2, v2.1, v2.0, v1.3, v1.2, v1.1, or v1.0 of the schema. Convert to
+ // Attempt deserialization using v3.0, v2.4, v2.3, v2.2, v2.1, v2.0, v1.3, v1.2, v1.1, or v1.0 of the schema. Convert to
// latest if deserialization succeeds.
else
{
+ XmlSerializer ser3_0 = new XmlSerializer(typeof(Schema.V3_0.veml));
+ TextReader reader3_0 = new StringReader(VEMLUtilities.FullyNotateVEML3_0(System.Text.Encoding.UTF8.GetString(rawData)));
+ XmlReader xmlReader3_0 = XmlReader.Create(reader3_0);
XmlSerializer ser2_4 = new XmlSerializer(typeof(Schema.V2_4.veml));
TextReader reader2_4 = new StringReader(VEMLUtilities.FullyNotateVEML2_4(System.Text.Encoding.UTF8.GetString(rawData)));
XmlReader xmlReader2_4 = XmlReader.Create(reader2_4);
@@ -246,90 +249,99 @@ public Schema.V3_0.veml LoadVEML(string path)
XmlSerializer ser1_1 = new XmlSerializer(typeof(Schema.V1_1.veml));
XmlSerializer ser1_0 = new XmlSerializer(typeof(Schema.V1_0.veml));
- if (ser2_4.CanDeserialize(xmlReader2_4))
+ if (ser3_0.CanDeserialize(xmlReader3_0))
+ {
+ //version = VEMLVersion.V3_0;
+ Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v3.0. Upgrading to VEML v3.1.");
+ reader = new StringReader(VEMLUtilities.FullyNotateVEML3_0(System.Text.Encoding.UTF8.GetString(rawData)));
+ xmlReader = XmlReader.Create(reader);
+ Schema.V3_0.veml v3_0VEML = (Schema.V3_0.veml) ser3_0.Deserialize(xmlReader);
+ veml = VEMLUtilities.ConvertFromV3_0(v3_0VEML);
+ }
+ else if (ser2_4.CanDeserialize(xmlReader2_4))
{
//version = VEMLVersion.v2_4;
- Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v2.4. Upgrading to VEML v3.0.");
+ Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v2.4. Upgrading to VEML v3.1.");
reader = new StringReader(VEMLUtilities.FullyNotateVEML2_4(System.Text.Encoding.UTF8.GetString(rawData)));
xmlReader = XmlReader.Create(reader);
Schema.V2_4.veml v2_4VEML = (Schema.V2_4.veml) ser2_4.Deserialize(xmlReader);
- veml = VEMLUtilities.ConvertFromV2_4(v2_4VEML);
+ veml = VEMLUtilities.ConvertFromV3_0(VEMLUtilities.ConvertFromV2_4(v2_4VEML));
}
else if (ser2_3.CanDeserialize(xmlReader))
{
//version = VEMLVersion.v2_3;
- Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v2.3. Upgrading to VEML v3.0.");
+ Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v2.3. Upgrading to VEML v3.1.");
reader = new StringReader(VEMLUtilities.FullyNotateVEML2_3(System.Text.Encoding.UTF8.GetString(rawData)));
xmlReader = XmlReader.Create(reader);
Schema.V2_3.veml v2_3VEML = (Schema.V2_3.veml)ser2_3.Deserialize(xmlReader);
- veml = VEMLUtilities.ConvertFromV2_3(v2_3VEML);
+ veml = VEMLUtilities.ConvertFromV3_0(VEMLUtilities.ConvertFromV2_3(v2_3VEML));
}
else if (ser2_2.CanDeserialize(xmlReader))
{
//version = VEMLVersion.v2_2;
- Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v2.2. Upgrading to VEML v3.0.");
+ Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v2.2. Upgrading to VEML v3.1.");
reader = new StringReader(VEMLUtilities.FullyNotateVEML2_2(System.Text.Encoding.UTF8.GetString(rawData)));
xmlReader = XmlReader.Create(reader);
Schema.V2_2.veml v2_2VEML = (Schema.V2_2.veml)ser2_2.Deserialize(xmlReader);
- veml = VEMLUtilities.ConvertFromV2_2(v2_2VEML);
+ veml = VEMLUtilities.ConvertFromV3_0(VEMLUtilities.ConvertFromV2_2(v2_2VEML));
}
else if (ser2_1.CanDeserialize(xmlReader))
{
//version = VEMLVersion.v2_1;
- Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v2.1. Upgrading to VEML v3.0.");
+ Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v2.1. Upgrading to VEML v3.1.");
reader = new StringReader(VEMLUtilities.FullyNotateVEML2_1(System.Text.Encoding.UTF8.GetString(rawData)));
xmlReader = XmlReader.Create(reader);
Schema.V2_1.veml v2_1VEML = (Schema.V2_1.veml) ser2_1.Deserialize(xmlReader);
- veml = VEMLUtilities.ConvertFromV2_1(v2_1VEML);
+ veml = VEMLUtilities.ConvertFromV3_0(VEMLUtilities.ConvertFromV2_1(v2_1VEML));
}
else if (ser2_0.CanDeserialize(xmlReader))
{
//version = VEMLVersion.v2_0;
- Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v2.0. Upgrading to VEML v3.0.");
+ Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v2.0. Upgrading to VEML v3.1.");
reader = new StringReader(VEMLUtilities.FullyNotateVEML2_0(System.Text.Encoding.UTF8.GetString(rawData)));
xmlReader = XmlReader.Create(reader);
Schema.V2_0.veml v2_0VEML = (Schema.V2_0.veml) ser2_0.Deserialize(xmlReader);
- veml = VEMLUtilities.ConvertFromV2_0(v2_0VEML);
+ veml = VEMLUtilities.ConvertFromV3_0(VEMLUtilities.ConvertFromV2_0(v2_0VEML));
}
else if (ser1_3.CanDeserialize(xmlReader))
{
//version = VEMLVersion.v1_3;
- Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v1.3. Upgrading to VEML v3.0.");
+ Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v1.3. Upgrading to VEML v3.1.");
reader = new StringReader(VEMLUtilities.FullyNotateVEML1_3(System.Text.Encoding.UTF8.GetString(rawData)));
xmlReader = XmlReader.Create(reader);
Schema.V1_3.veml v1_3VEML = (Schema.V1_3.veml) ser1_3.Deserialize(xmlReader);
- veml = VEMLUtilities.ConvertFromV1_3(v1_3VEML);
+ veml = VEMLUtilities.ConvertFromV3_0(VEMLUtilities.ConvertFromV1_3(v1_3VEML));
}
else if (ser1_2.CanDeserialize(xmlReader))
{
//version = VEMLVersion.v1_2;
- Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v1.2. Upgrading to VEML v3.0.");
+ Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v1.2. Upgrading to VEML v3.1.");
reader = new StringReader(VEMLUtilities.FullyNotateVEML1_2(System.Text.Encoding.UTF8.GetString(rawData)));
xmlReader = XmlReader.Create(reader);
Schema.V1_2.veml v1_2VEML = (Schema.V1_2.veml) ser1_2.Deserialize(xmlReader);
- veml = VEMLUtilities.ConvertFromV1_2(v1_2VEML);
+ veml = VEMLUtilities.ConvertFromV3_0(VEMLUtilities.ConvertFromV1_2(v1_2VEML));
}
else if (ser1_1.CanDeserialize(xmlReader))
{
//version = VEMLVersion.v1_1;
- Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v1.1. Upgrading to VEML v3.0.");
+ Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v1.1. Upgrading to VEML v3.1.");
reader = new StringReader(VEMLUtilities.FullyNotateVEML1_1(System.Text.Encoding.UTF8.GetString(rawData)));
xmlReader = XmlReader.Create(reader);
Schema.V1_1.veml v1_1VEML = (Schema.V1_1.veml) ser1_1.Deserialize(xmlReader);
- veml = VEMLUtilities.ConvertFromV1_1(v1_1VEML);
+ veml = VEMLUtilities.ConvertFromV3_0(VEMLUtilities.ConvertFromV1_1(v1_1VEML));
}
else if (ser1_0.CanDeserialize(xmlReader))
{
//version = VEMLVersion.v1_1;
- Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v1.0. Upgrading to VEML v3.0.");
+ Logging.Log("[VEMLHandler->LoadVEML] Document is VEML v1.0. Upgrading to VEML v3.1.");
reader = new StringReader(VEMLUtilities.FullyNotateVEML1_0(System.Text.Encoding.UTF8.GetString(rawData)));
xmlReader = XmlReader.Create(reader);
Schema.V1_0.veml v1_0VEML = (Schema.V1_0.veml) ser1_0.Deserialize(xmlReader);
- veml = VEMLUtilities.ConvertFromV1_0(v1_0VEML);
+ veml = VEMLUtilities.ConvertFromV3_0(VEMLUtilities.ConvertFromV1_0(v1_0VEML));
}
// Unknown VEML Version. Throw Error.
@@ -605,7 +617,7 @@ private void FinishVEMLDownload(string uri, int responseCode, byte[] rawData)
/// Base URI of the VEML document.
/// Action to invoke upon completion of world loading.
/// Provides a success/fail indication.
- private IEnumerator ApplyVEMLDocument(Schema.V3_0.veml vemlDocument, string baseURI, Action onComplete)
+ private IEnumerator ApplyVEMLDocument(Schema.V3_1.veml vemlDocument, string baseURI, Action onComplete)
{
string formattedBaseURI = VEMLUtilities.FormatURI(baseURI);
@@ -695,7 +707,7 @@ private IEnumerator ApplyVEMLDocument(Schema.V3_0.veml vemlDocument, string base
/// Action to invoke when scripts are processed. Provides an array of
/// strings containing the script contents.
/// Whether or not the operation succeeded.
- private bool ProcessMetadata(Schema.V3_0.veml vemlDocument, string baseURI, Action onScriptsProcessed)
+ private bool ProcessMetadata(Schema.V3_1.veml vemlDocument, string baseURI, Action onScriptsProcessed)
{
string formattedBaseURI = VEMLUtilities.FormatURI(baseURI);
@@ -752,7 +764,7 @@ private bool ProcessMetadata(Schema.V3_0.veml vemlDocument, string baseURI, Acti
/// The VEML document.
/// Base URI of the VEML document.
/// Whether or not the operation succeeded.
- private bool ProcessEnvironment(Schema.V3_0.veml vemlDocument, string baseURI)
+ private bool ProcessEnvironment(Schema.V3_1.veml vemlDocument, string baseURI)
{
string formattedBaseURI = VEMLUtilities.FormatURI(baseURI);
@@ -813,7 +825,7 @@ private bool ProcessEnvironment(Schema.V3_0.veml vemlDocument, string baseURI)
/// Base URI of the VEML document.
/// Action to invoke when scripts are processed. Provides an array of
/// strings containing the script contents.
- private IEnumerator ProcessScripts(Schema.V3_0.veml vemlDocument, string baseURI, Action onProcessed)
+ private IEnumerator ProcessScripts(Schema.V3_1.veml vemlDocument, string baseURI, Action onProcessed)
{
string formattedBaseURI = VEMLUtilities.FormatURI(baseURI);
@@ -879,7 +891,7 @@ private IEnumerator ProcessScripts(Schema.V3_0.veml vemlDocument, string baseURI
/// The VEML document.
/// Base URI of the VEML document.
/// Whether or not the operation succeeded.
- private bool ProcessCapabilities(Schema.V3_0.veml vemlDocument, string baseURI)
+ private bool ProcessCapabilities(Schema.V3_1.veml vemlDocument, string baseURI)
{
// Check capabilities.
if (vemlDocument.metadata.capability != null)
@@ -921,7 +933,7 @@ private bool ProcessCapabilities(Schema.V3_0.veml vemlDocument, string baseURI)
/// The VEML document.
/// Base URI of the VEML document.
/// Whether or not the operation succeeded.
- private bool ProcessInputEvents(Schema.V3_0.veml vemlDocument, string baseURI)
+ private bool ProcessInputEvents(Schema.V3_1.veml vemlDocument, string baseURI)
{
// Set up input events.
if (vemlDocument.metadata.inputevent != null)
@@ -941,7 +953,7 @@ private bool ProcessInputEvents(Schema.V3_0.veml vemlDocument, string baseURI)
/// The VEML document.
/// Base URI of the VEML document.
/// Whether or not the operation succeeded.
- private bool ProcessControlFlags(Schema.V3_0.veml vemlDocument, string baseURI)
+ private bool ProcessControlFlags(Schema.V3_1.veml vemlDocument, string baseURI)
{
// Set up control flags.
if (vemlDocument.metadata.controlflags != null)
@@ -1131,7 +1143,7 @@ private bool ProcessControlFlags(Schema.V3_0.veml vemlDocument, string baseURI)
/// The VEML document.
/// Base URI of the VEML document.
/// Whether or not the operation succeeded.
- private bool ProcessSynchronizers(Schema.V3_0.veml vemlDocument, string baseURI)
+ private bool ProcessSynchronizers(Schema.V3_1.veml vemlDocument, string baseURI)
{
// Set up synchronizers.
if (vemlDocument.metadata.synchronizationservice != null)
@@ -1368,7 +1380,7 @@ private bool LoadLiteProceduralSky(liteproceduralsky proceduralSky)
/// The VEML document.
/// Base URI of the VEML document.
/// Whether or not the operation succeeded.
- private bool ProcessEffects(Schema.V3_0.veml vemlDocument, string baseURI)
+ private bool ProcessEffects(Schema.V3_1.veml vemlDocument, string baseURI)
{
string formattedBaseURI = VEMLUtilities.FormatURI(baseURI);
@@ -1382,16 +1394,56 @@ private bool ProcessEffects(Schema.V3_0.veml vemlDocument, string baseURI)
}
}
+ // Process shadows setting if specified
+ if (vemlDocument.environment.effects.shadowsSpecified)
+ {
+ ProcessShadowsSetting(vemlDocument.environment.effects.shadows);
+ }
+
return true;
}
+ ///
+ /// Process the shadows setting for all lights in the world.
+ ///
+ /// The shadows setting from effects-settings.
+ private void ProcessShadowsSetting(Schema.V3_1.effectssettingsShadows shadowsSetting)
+ {
+ // Get all entities in the world
+ StraightFour.Entity.BaseEntity[] allEntities = StraightFour.StraightFour.ActiveWorld.entityManager.GetAllEntities();
+
+ // Filter for light entities and apply shadow settings
+ foreach (StraightFour.Entity.BaseEntity entity in allEntities)
+ {
+ if (entity is StraightFour.Entity.LightEntity && entity.gameObject != null)
+ {
+ Light lightComponent = entity.gameObject.GetComponent();
+ if (lightComponent != null)
+ {
+ switch (shadowsSetting)
+ {
+ case Schema.V3_1.effectssettingsShadows.off:
+ lightComponent.shadows = LightShadows.None;
+ break;
+ case Schema.V3_1.effectssettingsShadows.on:
+ lightComponent.shadows = LightShadows.Soft;
+ break;
+ case Schema.V3_1.effectssettingsShadows.preserve:
+ // Do nothing - leave shadow settings unchanged
+ break;
+ }
+ }
+ }
+ }
+ }
+
///
/// Process VEML document environment entities.
///
/// The VEML document.
/// Base URI of the VEML document.
/// Whether or not the operation succeeded.
- private bool ProcessEntities(Schema.V3_0.veml vemlDocument, string baseURI)
+ private bool ProcessEntities(Schema.V3_1.veml vemlDocument, string baseURI)
{
string formattedBaseURI = VEMLUtilities.FormatURI(baseURI);
diff --git a/Assets/Runtime/Handlers/VEMLHandler/Scripts/VEMLUtilities.cs b/Assets/Runtime/Handlers/VEMLHandler/Scripts/VEMLUtilities.cs
index 40b2b8c8..716d36cd 100644
--- a/Assets/Runtime/Handlers/VEMLHandler/Scripts/VEMLUtilities.cs
+++ b/Assets/Runtime/Handlers/VEMLHandler/Scripts/VEMLUtilities.cs
@@ -12,6 +12,10 @@ public class VEMLUtilities
{
public static readonly string xmlHeadingTag = "";
+ public static readonly string VEML3_1FullTag = "";
+
public static readonly string VEML3_0FullTag = "";
@@ -52,6 +56,11 @@ public class VEMLUtilities
" xsi:schemaLocation=\"http://www.fivesqd.com/schemas/veml/1.0 schema.xsd\"" +
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">";
+ public static string FullyNotateVEML3_1(string inputVEML)
+ {
+ return FullyNotateVEML(inputVEML, VEML3_1FullTag);
+ }
+
public static string FullyNotateVEML3_0(string inputVEML)
{
return FullyNotateVEML(inputVEML, VEML3_0FullTag);
@@ -102,6 +111,17 @@ public static string FullyNotateVEML1_0(string inputVEML)
return FullyNotateVEML(inputVEML, VEML1_0FullTag);
}
+ public static bool IsPreVEML3_1(string rawVEML)
+ {
+ // Check if the document contains v3.0 namespace
+ if (rawVEML.Contains("schemas/veml/3.0"))
+ {
+ return true;
+ }
+
+ return IsPreVEML3_0(rawVEML);
+ }
+
public static bool IsPreVEML3_0(string rawVEML)
{
string[] preVEMLEntities = new string[] { "airplaneentity", "automobileentity",
@@ -123,6 +143,71 @@ public static bool IsPreVEML3_0(string rawVEML)
return false;
}
+ ///
+ /// Convert the schema instance from version 3.0 to version 3.1.
+ ///
+ /// Input VEML instance.
+ /// Version 3.1 schema for the input VEML instance.
+ public static Schema.V3_1.veml ConvertFromV3_0(Schema.V3_0.veml inputVEML)
+ {
+ // Serialize V3.0 and deserialize as V3.1
+ // Since the only difference is the added optional shadows field,
+ // we can do a simple property-by-property copy of the root structure
+ Schema.V3_1.veml outputVEML = new Schema.V3_1.veml();
+
+ if (inputVEML.metadata != null)
+ {
+ outputVEML.metadata = ConvertMetadataV3_0ToV3_1(inputVEML.metadata);
+ }
+
+ if (inputVEML.environment != null)
+ {
+ outputVEML.environment = ConvertEnvironmentV3_0ToV3_1(inputVEML.environment);
+ }
+
+ return outputVEML;
+ }
+
+ private static Schema.V3_1.vemlMetadata ConvertMetadataV3_0ToV3_1(Schema.V3_0.vemlMetadata inputMetadata)
+ {
+ System.Xml.Serialization.XmlSerializer v30Serializer = new System.Xml.Serialization.XmlSerializer(typeof(Schema.V3_0.vemlMetadata));
+ string xmlString;
+ using (System.IO.StringWriter stringWriter = new System.IO.StringWriter())
+ {
+ v30Serializer.Serialize(stringWriter, inputMetadata);
+ xmlString = stringWriter.ToString();
+ }
+
+ // Replace namespace 3.0 with 3.1
+ xmlString = xmlString.Replace("schemas/veml/3.0", "schemas/veml/3.1");
+
+ System.Xml.Serialization.XmlSerializer v31Serializer = new System.Xml.Serialization.XmlSerializer(typeof(Schema.V3_1.vemlMetadata));
+ using (System.IO.StringReader stringReader = new System.IO.StringReader(xmlString))
+ {
+ return (Schema.V3_1.vemlMetadata)v31Serializer.Deserialize(stringReader);
+ }
+ }
+
+ private static Schema.V3_1.vemlEnvironment ConvertEnvironmentV3_0ToV3_1(Schema.V3_0.vemlEnvironment inputEnvironment)
+ {
+ System.Xml.Serialization.XmlSerializer v30Serializer = new System.Xml.Serialization.XmlSerializer(typeof(Schema.V3_0.vemlEnvironment));
+ string xmlString;
+ using (System.IO.StringWriter stringWriter = new System.IO.StringWriter())
+ {
+ v30Serializer.Serialize(stringWriter, inputEnvironment);
+ xmlString = stringWriter.ToString();
+ }
+
+ // Replace namespace 3.0 with 3.1
+ xmlString = xmlString.Replace("schemas/veml/3.0", "schemas/veml/3.1");
+
+ System.Xml.Serialization.XmlSerializer v31Serializer = new System.Xml.Serialization.XmlSerializer(typeof(Schema.V3_1.vemlEnvironment));
+ using (System.IO.StringReader stringReader = new System.IO.StringReader(xmlString))
+ {
+ return (Schema.V3_1.vemlEnvironment)v31Serializer.Deserialize(stringReader);
+ }
+ }
+
///
/// Convert the schema instance from version 2.4 to the current schema (version 2.4).
///
diff --git a/Assets/Runtime/Handlers/VEMLHandler/Tests/VEMLHandlerTests.cs b/Assets/Runtime/Handlers/VEMLHandler/Tests/VEMLHandlerTests.cs
index 441fa1b8..324bfc47 100644
--- a/Assets/Runtime/Handlers/VEMLHandler/Tests/VEMLHandlerTests.cs
+++ b/Assets/Runtime/Handlers/VEMLHandler/Tests/VEMLHandlerTests.cs
@@ -9,6 +9,7 @@
using FiveSQD.WebVerse.LocalStorage;
using System.IO;
using System;
+using ShadowsEnum = FiveSQD.WebVerse.Handlers.VEML.Schema.V3_1.effectssettingsShadows;
///
/// Unit tests for the VEML Handler.
@@ -181,4 +182,73 @@ public void VEMLHandler_Terminate_CleansUpProperly()
// Assert - termination completed without exceptions
Assert.Pass("Termination completed successfully");
}
+
+ [Test]
+ public void VEMLHandler_V3_1_Schema_WithShadowsField_ParsesCorrectly()
+ {
+ // Arrange - Create a valid VEML 3.1 file with shadows field
+ string vemlContent = @"
+
+
+ V3.1 Test Scene with Shadows
+
+
+
+
+
+
+
+
+
+
+
+";
+
+ string testVEMLPath = Path.Combine(vemlHandler.runtime.fileHandler.fileDirectory, "v3_1-test.veml");
+ Directory.CreateDirectory(Path.GetDirectoryName(testVEMLPath));
+ File.WriteAllText(testVEMLPath, vemlContent);
+
+ // Act - Load the VEML file
+ var vemlDoc = vemlHandler.LoadVEML(testVEMLPath);
+
+ // Assert - Verify the document was loaded correctly
+ Assert.IsNotNull(vemlDoc);
+ Assert.IsNotNull(vemlDoc.metadata);
+ Assert.AreEqual("V3.1 Test Scene with Shadows", vemlDoc.metadata.title);
+ Assert.IsNotNull(vemlDoc.environment);
+ Assert.IsNotNull(vemlDoc.environment.effects);
+ Assert.IsTrue(vemlDoc.environment.effects.shadowsSpecified);
+ Assert.AreEqual(ShadowsEnum.on, vemlDoc.environment.effects.shadows);
+ }
+
+ [Test]
+ public void VEMLHandler_V3_0_Schema_UpgradesToV3_1_Successfully()
+ {
+ // Arrange - Create a VEML 3.0 file
+ string vemlContent = @"
+
+
+ V3.0 Test Scene
+
+
+
+
+
+
+
+
+";
+
+ string testVEMLPath = Path.Combine(vemlHandler.runtime.fileHandler.fileDirectory, "v3_0-upgrade-test.veml");
+ Directory.CreateDirectory(Path.GetDirectoryName(testVEMLPath));
+ File.WriteAllText(testVEMLPath, vemlContent);
+
+ // Act - Load the VEML file (should upgrade to V3.1)
+ var vemlDoc = vemlHandler.LoadVEML(testVEMLPath);
+
+ // Assert - Verify the document was loaded and upgraded correctly
+ Assert.IsNotNull(vemlDoc);
+ Assert.IsNotNull(vemlDoc.metadata);
+ Assert.AreEqual("V3.0 Test Scene", vemlDoc.metadata.title);
+ }
}
\ No newline at end of file
diff --git a/IMPLEMENTATION-SUMMARY.md b/IMPLEMENTATION-SUMMARY.md
new file mode 100644
index 00000000..a8c0682b
--- /dev/null
+++ b/IMPLEMENTATION-SUMMARY.md
@@ -0,0 +1,133 @@
+# VEML 3.1 Implementation Summary
+
+## Completed Changes
+
+This implementation successfully adds VEML schema version 3.1 with global shadow control for light entities.
+
+### Files Modified
+
+1. **Assets/Runtime/Handlers/VEMLHandler/Schema/V3_1/** (New Directory)
+ - `VEML.cs` - Complete V3.1 schema definition with shadows enumeration
+ - `VEML.cs.meta` - Unity metadata file
+
+2. **Assets/Runtime/Handlers/VEMLHandler/Scripts/VEMLHandler.cs**
+ - Updated to use V3_1 schema as current version
+ - Added ProcessShadowsSetting() method for shadow control
+ - Updated LoadVEML() to handle V3.1 documents
+ - Implemented upgrade paths from all previous versions
+
+3. **Assets/Runtime/Handlers/VEMLHandler/Scripts/VEMLUtilities.cs**
+ - Added VEML3_1FullTag constant
+ - Added FullyNotateVEML3_1() method
+ - Added IsPreVEML3_1() method
+ - Added ConvertFromV3_0() with helper methods
+
+4. **Assets/Runtime/Handlers/VEMLHandler/Tests/VEMLHandlerTests.cs**
+ - Added test for V3.1 schema parsing
+ - Added test for V3.0 to V3.1 compatibility
+ - Added using alias for cleaner code
+
+5. **docs/VEML-3.1-CHANGES.md** (New)
+ - Complete documentation of new features
+ - Migration guide
+ - Use cases and examples
+
+6. **docs/veml-3.1-shadows-example.veml** (New)
+ - Working example demonstrating shadows feature
+
+### Feature Implementation
+
+#### New Schema Element
+
+```xml
+
+```
+
+#### Values
+
+- **off**: Disables shadows (LightShadows.None) for all lights
+- **on**: Enables soft shadows (LightShadows.Soft) for all lights
+- **preserve**: Leaves shadow settings unchanged (default)
+
+#### Processing Flow
+
+1. VEML document is loaded via LoadVEML()
+2. Schema version is detected (3.1 or auto-upgraded from older versions)
+3. ProcessEffects() reads the shadows attribute if present
+4. ProcessShadowsSetting() iterates all entities and applies settings to lights
+
+### Backward Compatibility
+
+- All VEML versions 1.0-3.0 automatically upgrade to 3.1
+- Existing documents work without modification
+- Omitting the shadows attribute preserves current behavior
+
+### Code Quality
+
+- Proper resource disposal with using statements
+- Unit tests for new functionality
+- Comprehensive documentation
+- Example files for reference
+
+## Testing
+
+The implementation includes two new unit tests:
+
+1. **VEMLHandler_V3_1_Schema_WithShadowsField_ParsesCorrectly**
+ - Tests V3.1 document parsing
+ - Validates shadows attribute is read correctly
+
+2. **VEMLHandler_V3_0_Schema_UpgradesToV3_1_Successfully**
+ - Tests automatic schema upgrade
+ - Ensures backward compatibility
+
+## Next Steps
+
+### Required Actions in External Repositories
+
+1. **@Five-Squared-Interactive/VEML Repository**
+ - Update `files/VEML.xsd` to version 3.1
+ - Add `shadows` enumeration to effects-settings
+ - Update documentation
+
+2. **StraightFour Repository**
+ - No changes required - existing API is sufficient
+
+### Recommended Testing
+
+1. Load various VEML documents (V1.0-V3.1) to verify upgrade paths
+2. Test shadow behavior with different light types (directional, point, spot)
+3. Performance testing with large worlds containing many lights
+4. Visual testing to confirm shadow rendering
+
+## Implementation Notes
+
+### Design Decisions
+
+1. **Schema Conversion Approach**: Used XML serialization/deserialization for V3.0 to V3.1 conversion. While not the most performant, it ensures all data is correctly transferred and maintains consistency with existing conversion patterns.
+
+2. **Entity Iteration**: The ProcessShadowsSetting() method iterates all entities to find lights. This is consistent with how other global settings are applied and works well for typical world sizes.
+
+3. **Shadow Type**: When enabling shadows, we use LightShadows.Soft for better visual quality. This is Unity's default high-quality shadow setting.
+
+### Known Limitations
+
+1. Shadow settings are applied once during world loading. Runtime changes to the shadows attribute would require reloading the world.
+
+2. The method iterates all entities, not just lights. For very large worlds (thousands of entities), this could have a minor performance impact during load.
+
+3. The conversion uses string replacement for namespace changes, which works but is not as robust as proper XML manipulation. This maintains consistency with existing code patterns.
+
+## Conclusion
+
+The VEML 3.1 implementation is complete and ready for integration. All core requirements from the issue have been met:
+
+✅ Added shadows enumeration field to effects-settings
+✅ Updated schema version to 3.1
+✅ Created V3_1 directory structure
+✅ Updated VEMLHandler to support shadow control
+✅ Implemented off/on/preserve behavior
+✅ Maintained backward compatibility
+✅ Added tests and documentation
+
+The XSD schema file in the external VEML repository should be updated to match these changes.
diff --git a/docs/VEML-3.1-CHANGES.md b/docs/VEML-3.1-CHANGES.md
new file mode 100644
index 00000000..11731c35
--- /dev/null
+++ b/docs/VEML-3.1-CHANGES.md
@@ -0,0 +1,141 @@
+# VEML 3.1 Schema Changes
+
+## Overview
+
+VEML schema version 3.1 introduces global shadow control for light entities through a new `shadows` attribute in the `effects-settings` element.
+
+## New Features
+
+### Global Shadow Control
+
+The `shadows` attribute in `effects-settings` provides standardized control over light shadow behavior for the entire world.
+
+#### Syntax
+
+```xml
+
+
+
+```
+
+#### Values
+
+- **`off`**: Disables shadows for all light entities in the world
+- **`on`**: Enables soft shadows for all light entities in the world
+- **`preserve`**: Leaves shadow settings unchanged for all lights (default behavior)
+
+#### Example Usage
+
+```xml
+
+
+
+ Scene with Global Shadows Enabled
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Backward Compatibility
+
+VEML 3.1 maintains full backward compatibility with all previous versions (1.0 through 3.0):
+
+- Existing VEML documents continue to work without modification
+- Documents without the `shadows` attribute default to `preserve` behavior
+- Automatic schema upgrade is performed when loading older VEML versions
+
+## Implementation Details
+
+### Schema Changes
+
+- **Namespace**: `http://www.fivesqd.com/schemas/veml/3.1`
+- **New Type**: `effectssettingsShadows` enumeration with values: `off`, `on`, `preserve`
+- **Updated Type**: `effectssettings` class now includes optional `shadows` attribute
+
+### Processing
+
+When a VEML document is loaded with the `shadows` attribute:
+
+1. The `ProcessEffects` method reads the shadows setting
+2. The `ProcessShadowsSetting` method iterates through all entities in the world
+3. For each `LightEntity`, the Unity `Light.shadows` property is set:
+ - `off` → `LightShadows.None`
+ - `on` → `LightShadows.Soft`
+ - `preserve` → No change
+
+### Performance Considerations
+
+The shadow setting is applied once during world loading by iterating through all entities. For large worlds with many entities, this operation scales with the total entity count, not just light entities.
+
+## Migration Guide
+
+### Upgrading from VEML 3.0
+
+To add global shadow control to existing VEML 3.0 documents:
+
+1. Update the namespace declaration:
+ ```xml
+
+ ```
+
+2. Add the `shadows` attribute to `effects-settings`:
+ ```xml
+
+
+
+ ```
+
+### Automatic Upgrade
+
+The WebVerse Runtime automatically upgrades VEML 3.0 documents to 3.1 when loading. No manual conversion is required.
+
+## Use Cases
+
+### Optimizing Performance
+
+Disable shadows for better performance on low-end devices:
+
+```xml
+
+```
+
+### Enhanced Visual Quality
+
+Enable shadows for all lights to improve scene realism:
+
+```xml
+
+```
+
+### Per-Light Control
+
+Use `preserve` (or omit the attribute) to maintain individual light shadow settings defined in entity properties or scripts:
+
+```xml
+
+```
+
+## Related Files
+
+- Schema Definition: `Assets/Runtime/Handlers/VEMLHandler/Schema/V3_1/VEML.cs`
+- Handler Implementation: `Assets/Runtime/Handlers/VEMLHandler/Scripts/VEMLHandler.cs`
+- Utilities: `Assets/Runtime/Handlers/VEMLHandler/Scripts/VEMLUtilities.cs`
+- Tests: `Assets/Runtime/Handlers/VEMLHandler/Tests/VEMLHandlerTests.cs`
+- Example: `docs/veml-3.1-shadows-example.veml`
+
+## External Dependencies
+
+The VEML XSD schema definition is maintained in the external [@Five-Squared-Interactive/VEML](https://github.com/Five-Squared-Interactive/VEML) repository and should be updated separately to reflect these changes.
diff --git a/docs/veml-3.1-shadows-example.veml b/docs/veml-3.1-shadows-example.veml
new file mode 100644
index 00000000..5d6a3bf6
--- /dev/null
+++ b/docs/veml-3.1-shadows-example.veml
@@ -0,0 +1,60 @@
+
+
+
+
+ VEML 3.1 Shadows Example
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ gray
+
+
+
+
+
+
+
+ blue
+
+
+