public void Cubemap(Cubemap texture) { var resourceName = EvaluateCubemapName(texture); var assetGuid = texture.GetKey(); var sourceFileTimestampUtc = ExportUtils.GetLastWriteTimeUtc(texture); if (_engine.IsUpToDate(assetGuid, resourceName, sourceFileTimestampUtc)) { return; } if (!EnsureReadableTexture(texture)) { return; } using (var writer = _engine.TryCreateXml(assetGuid, resourceName, sourceFileTimestampUtc)) { if (writer != null) { WriteCubemap(texture, resourceName, writer); } } }
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 void Cubemap(Cubemap texture) { if (!EnsureReadableTexture(texture)) { return; } var resourceName = EvaluateCubemapName(texture); using (var writer = _engine.TryCreateXml(texture.GetKey(), resourceName, ExportUtils.GetLastWriteTimeUtc(texture))) { if (writer != null) { var ddsName = resourceName.Replace(".xml", ".dds"); var srgb = true; DDS.SaveAsRgbaDds(texture, _engine.GetTargetFilePath(ddsName), srgb); writer.WriteStartElement("cubemap"); writer.WriteWhitespace(Environment.NewLine); writer.WriteStartElement("srgb"); writer.WriteAttributeString("enable", srgb ? "true" : "false"); writer.WriteEndElement(); writer.WriteStartElement("image"); writer.WriteAttributeString("name", Path.GetFileName(ddsName)); writer.WriteEndElement(); writer.WriteWhitespace(Environment.NewLine); writer.WriteEndElement(); } } }
protected void WriteOptions(AssetKey assetGuid, string urhoTextureName, DateTime lastWriteTimeUtc, TextureOptions options) { if (options == null) { return; } var xmlFileName = ExportUtils.ReplaceExtension(urhoTextureName, ".xml"); if (xmlFileName == urhoTextureName) { return; } using (var writer = _engine.TryCreateXml(assetGuid, xmlFileName, lastWriteTimeUtc)) { if (writer != null) { writer.WriteStartElement("texture"); writer.WriteWhitespace(Environment.NewLine); switch (options.filterMode) { case FilterMode.Point: writer.WriteElementParameter("filter", "mode", "nearest"); break; case FilterMode.Bilinear: writer.WriteElementParameter("filter", "mode", "bilinear"); break; case FilterMode.Trilinear: writer.WriteElementParameter("filter", "mode", "trilinear"); break; default: writer.WriteElementParameter("filter", "mode", "default"); break; } switch (options.wrapMode) { case TextureWrapMode.Repeat: writer.WriteElementParameter("address", "mode", "wrap"); break; case TextureWrapMode.Clamp: writer.WriteElementParameter("address", "mode", "clamp"); break; case TextureWrapMode.Mirror: writer.WriteElementParameter("address", "mode", "mirror"); break; } writer.WriteElementParameter("srgb", "enable", options.sRGBTexture ? "true" : "false"); writer.WriteElementParameter("mipmap", "enable", options.mipmapEnabled ? "true" : "false"); writer.WriteEndElement(); } } }
private void WriteTerrainMaterial(TerrainData terrain, PrefabContext prefabContext) { using (var writer = _engine.TryCreateXml(terrain.GetKey(), EvaluateMaterial(terrain), ExportUtils.GetLastWriteTimeUtc(terrain))) { if (writer == null) { return; } var layers = terrain.terrainLayers; var layerIndices = GetTerrainLayersByPopularity(terrain).Take(_maxLayers).ToArray(); var material = new UrhoPBRMaterial(); material.Technique = "Techniques/PBR/PBRTerrainBlend.xml"; material.TextureUnits.Add(EvaluateWeightsMap(terrain)); Vector2 detailTiling = new Vector2(1, 1); for (var layerIndex = 0; layerIndex < layerIndices.Length; ++layerIndex) { var layer = layers[layerIndices[layerIndex]]; detailTiling = new Vector2(terrain.size.x / layer.tileSize.x, terrain.size.z / layer.tileSize.y); if (layer.diffuseTexture != null) { _engine.ScheduleTexture(layer.diffuseTexture); var urhoAssetName = _engine.EvaluateTextrueName(layer.diffuseTexture); material.TextureUnits.Add(urhoAssetName); } else { material.TextureUnits.Add(null); } } material.MatSpecColor = new Color(0.0f, 0.0f, 0.0f, 1.0f); material.Roughness = 1; material.Metallic = 0; material.ExtraParameters.Add("DetailTiling", detailTiling); material.PixelShaderDefines.Add("TERRAINLAYERS" + layerIndices.Length.ToString(CultureInfo.InvariantCulture)); StandardMaterialExporter.WriteMaterial(writer, material, prefabContext); } }