Example #1
0
        public static VegetationAnimation CreateFromElement(XElement element)
        {
            VegetationAnimation va = new VegetationAnimation();

            foreach (XAttribute attribute in element.Attributes())
            {
                switch (attribute.Name.LocalName)
                {
                    case "Enabled":
                        va.bEnabled = (element.Attribute("Enabled").Value.ToLower() == "true");
                        break;

                    case "BranchAmplitude":
                        va.branchAmplitude = element.Attribute("BranchAmplitude").Value.ToSingle();
                        break;

                    case "DetailAmplitude":
                        va.detailAmplitude = element.Attribute("DetailAmplitude").Value.ToSingle();
                        break;

                    case "DetailFrequency":
                        va.detailFrequency = element.Attribute("DetailFrequency").Value.ToSingle();
                        break;

                    case "BendScale":
                        va.bendScale = element.Attribute("BendScale").Value.ToSingle();
                        break;

                    default:
                        throw new NotImplementedException(string.Format("Unknown Attribute: {0}", attribute.Name.LocalName));
                }
            }

            return va;
        }
Example #2
0
        public MT2(XElement xml)
            : this()
        {
            this.xml = xml;

            var dblSided = xml.Descendants("DoubleSided").FirstOrDefault();
            var castsShads = xml.Descendants("CastsShadows").FirstOrDefault();
            var recShads = xml.Descendants("ReceivesShadows").FirstOrDefault();
            var fog = xml.Descendants("FogEnabled").FirstOrDefault();
            var trans = xml.Descendants("Translucent").FirstOrDefault();
            var walk = xml.Descendants("Walkable").FirstOrDefault();
            var panic = xml.Descendants("Panickable").FirstOrDefault();
            var sit = xml.Descendants("Sitable").FirstOrDefault();
            var pick = xml.Descendants("Unpickable").FirstOrDefault();
            var needWSVN = xml.Descendants("NeedsWorldSpaceVertexNormal").FirstOrDefault();
            var needWEP = xml.Descendants("NeedsWorldEyePos").FirstOrDefault();
            var needWVP = xml.Descendants("NeedsWorldVertexPos").FirstOrDefault();
            var needWLD = xml.Descendants("NeedsWorldLightDir").FirstOrDefault();
            var needLSVN = xml.Descendants("NeedsLightingSpaceVertexNormal").FirstOrDefault();
            var needVC = xml.Descendants("NeedsVertexColour").FirstOrDefault();
            var needLCM = xml.Descendants("NeedsLocalCubeMap").FirstOrDefault();
            var needSOC = xml.Descendants("NeedsSeperateObjectColour").FirstOrDefault();

            if (dblSided != null) { bDoubleSided = (dblSided.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (castsShads != null) { bCastsShadows = (castsShads.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (recShads != null) { bReceivesShadows = (recShads.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (fog != null) { bFogEnabled = (fog.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (trans != null) { bTranslucent = (trans.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (walk != null) { bWalkable = (walk.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (panic != null) { bPanickable = (panic.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (sit != null) { bSitable = (sit.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (pick != null) { bUnpickable = (pick.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (needWSVN != null) { bNeedsWorldSpaceVertexNormal = (needWSVN.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (needWEP != null) { bNeedsWorldEyePos = (needWEP.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (needWVP != null) { bNeedsWorldVertexPos = (needWVP.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (needWLD != null) { bNeedsWorldLightDir = (needWLD.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (needLSVN != null) { bNeedsLightingSpaceVertexNormal = (needLSVN.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (needVC != null) { bNeedsVertexColour = (needVC.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (needLCM != null) { bNeedsLocalCubeMap = (needLCM.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }
            if (needSOC != null) { bNeedsSeperateObjectColour = (needSOC.Attribute("Value").Value.ToLower() == "true" ? Troolean.True : Troolean.False); }

            var mult = xml.Descendants("Constant").Where(e => e.Attribute("Alias").Value == "Multiplier").FirstOrDefault();
            var emml = xml.Descendants("Constant").Where(e => e.Attribute("Alias").Value == "EmissiveLight").FirstOrDefault();
            var emmf = xml.Descendants("Constant").Where(e => e.Attribute("Alias").Value == "EmissiveFactor").FirstOrDefault();
            var emmc = xml.Descendants("Constant").Where(e => e.Attribute("Alias").Value == "Emissive_Colour").FirstOrDefault();
            var refm = xml.Descendants("Constant").Where(e => e.Attribute("Alias").Value == "ReflectionMultiplier").FirstOrDefault();
            var fres = xml.Descendants("Constant").Where(e => e.Attribute("Alias").Value == "Fresnel_R0").FirstOrDefault();
            var refb = xml.Descendants("Constant").Where(e => e.Attribute("Alias").Value == "ReflectionBluryness").FirstOrDefault();
            var alph = xml.Descendants("Constant").Where(e => e.Attribute("Alias").Value == "AlphaCutOff").FirstOrDefault();

            if (mult != null) { multiplier = ReadConstant(mult); }
            if (emml != null) { emissiveLight = ReadConstant(emml); }
            if (emmf != null) { emissiveFactor = ReadConstant(emmf); }
            if (emmc != null) { emissiveColour = ReadConstant(emmc); }
            if (refm != null) { reflectionMultiplier = ReadConstant(refm); }
            if (fres != null) { fresnelR0 = ReadConstant(fres); }
            if (refb != null) { reflectionBluryness = ReadConstant(refb); }
            if (alph != null) { alphaCutOff = ReadConstant(alph); }

            var vegetation = xml.Descendants("VegetationAnimation").FirstOrDefault();

            if (vegetation != null) { vegetationAnimation = VegetationAnimation.CreateFromElement(vegetation); }

            foreach (var textureCoordSource in xml.Descendants("TextureCoordSource"))
            {
                textureCoordSources.Add(TextureCoordSource.CreateFromElement(textureCoordSource));
            }

            foreach (var sampler in xml.Descendants("Sampler"))
            {
                samplers.Add(Sampler.CreateFromElement(sampler));
            }

            // Rotator2D

            var sub = xml.Descendants("Substance").FirstOrDefault();

            if (sub != null) { substance = sub.Attribute("Name").Value; }
        }