private void ExportMetadata(string metadataFileName, AnimationClip clip, PrefabContext prefabContext) { using (var file = _engine.TryCreateXml(clip.GetKey(), metadataFileName, ExportUtils.GetLastWriteTimeUtc(clip))) { if (file == null) { return; } file.WriteStartElement("animation"); file.WriteWhitespace(Environment.NewLine); foreach (var clipEvent in clip.events) { file.WriteWhitespace("\t"); file.WriteStartElement("trigger"); file.WriteAttributeString("time", BaseNodeExporter.Format(clipEvent.time)); file.WriteAttributeString("type", "String"); file.WriteAttributeString("value", clipEvent.functionName); file.WriteEndElement(); file.WriteWhitespace(Environment.NewLine); } file.WriteEndElement(); file.WriteWhitespace(Environment.NewLine); } }
public override void ExportMaterial(Material material, PrefabContext prefabContext) { var urhoPath = EvaluateMaterialName(material); using (var writer = Engine.TryCreateXml(material.GetKey(), urhoPath, ExportUtils.GetLastWriteTimeUtc(material))) { if (writer == null) { return; } var arguments = SetupLegacy(material); var flags = new LegacyTechniqueFlags(); flags.hasAlpha = arguments.Transparent; flags.hasDiffuse = arguments.Diffuse != null; flags.hasEmissive = arguments.Emission != null; flags.hasNormal = arguments.Bump != null; flags.hasSpecular = arguments.Specular != null; writer.WriteStartElement("material"); writer.WriteWhitespace(Environment.NewLine); { var bestTechnique = Techniques[0]; var bestTechniqueDistance = bestTechnique.Material - flags; foreach (var technique in Techniques) { if (technique.Material.Fits(flags)) { var d = technique.Material - flags; if (d < bestTechniqueDistance) { bestTechnique = technique; bestTechniqueDistance = d; } } } WriteTechnique(writer, "Techniques/" + bestTechnique.Name); } if (arguments.Diffuse != null) { WriteTexture(arguments.Diffuse, writer, "diffuse", prefabContext); } if (arguments.Specular != null) { WriteTexture(arguments.Specular, writer, "specular", prefabContext); } if (arguments.Bump != null) { WriteTexture(arguments.Bump, writer, "normal", prefabContext); } if (arguments.Emission != null) { WriteTexture(arguments.Bump, writer, "emissive", prefabContext); } writer.WriteParameter("MatDiffColor", arguments.DiffColor); if (arguments.HasEmission) { writer.WriteParameter("MatEmissiveColor", BaseNodeExporter.FormatRGB(arguments.EmissiveColor)); } WriteCommonParameters(writer, arguments); writer.WriteEndElement(); } }