public static void Initialize() { var hasAnyMapper = false; foreach (var materialMapperName in MaterialMapper.RegisteredMappers) { if (TriLibSettings.GetBool(materialMapperName)) { hasAnyMapper = true; break; } } if (!hasAnyMapper) { string materialMapper; if (GraphicsSettingsUtils.IsUsingHDRPPipeline) { materialMapper = "HDRPMaterialMapper"; } else if (GraphicsSettingsUtils.IsUsingUniversalPipeline) { materialMapper = "UniversalRPMaterialMapper"; } else { materialMapper = "StandardMaterialMapper"; } Debug.Log($"TriLib is configured to use the '{materialMapper}' Material Mapper. If you want to use different Material Mappers, you can change this setting on the Project Settings/TriLib area."); TriLibSettings.SetBool(materialMapper, true); } }
private void Start() { MaterialMapper materialMapper = null; foreach (var materialMapperName in MaterialMapper.RegisteredMappers) { if (TriLibSettings.GetBool(materialMapperName)) { materialMapper = (MaterialMapper)ScriptableObject.CreateInstance(materialMapperName); break; } } if (materialMapper == null) { return; } var meshRenderers = GetComponentsInChildren <MeshRenderer>(); foreach (var meshRenderer in meshRenderers) { var materials = meshRenderer.materials; for (var i = 0; i < materials.Length; i++) { var color = meshRenderer.sharedMaterials[i].color; materials[i] = Instantiate(materialMapper.MaterialPreset); materials[i].color = color; } meshRenderer.materials = materials; } var skinnedMeshRenderers = GetComponentsInChildren <SkinnedMeshRenderer>(); foreach (var skinnedMeshRenderer in skinnedMeshRenderers) { var materials = skinnedMeshRenderer.materials; for (var i = 0; i < materials.Length; i++) { var color = skinnedMeshRenderer.sharedMaterials[i].color; materials[i] = Instantiate(materialMapper.MaterialPreset); materials[i].color = color; } skinnedMeshRenderer.materials = materials; } Destroy(materialMapper); }
public override bool IsCompatible(MaterialMapperContext materialMapperContext) { return(TriLibSettings.GetBool("UniversalRPMaterialMapper")); }
public override void OnGUI(string searchContext) { EditorGUILayout.Space(); var contentWidth = GUILayoutUtility.GetLastRect().width * 0.5f; EditorGUIUtility.labelWidth = contentWidth; EditorGUIUtility.fieldWidth = contentWidth; GUILayout.BeginVertical(Styles.Group); GUILayout.Label("Enabled Readers", EditorStyles.boldLabel); GUILayout.Label("You can disable file formats you don't use here"); EditorGUILayout.Space(); var changed = false; foreach (var importerOption in _importerOptions) { var value = importerOption.PluginImporter.GetCompatibleWithAnyPlatform(); var newValue = EditorGUILayout.Toggle(importerOption, value); if (newValue != value) { importerOption.PluginImporter.SetCompatibleWithAnyPlatform(newValue); changed = true; } } if (changed) { string usings = null; string extensions = null; string findReader = null; foreach (var importerOption in _importerOptions) { if (importerOption.PluginImporter.GetCompatibleWithAnyPlatform()) { extensions += $"\n\t\t\t\textensions.AddRange({importerOption.text}.GetExtensions());"; usings += $"using {importerOption.Namespace};\n"; findReader += $"\n\t\t\tif (((IList) {importerOption.text}.GetExtensions()).Contains(extension))\n\t\t\t{{\n\t\t\t\treturn new {importerOption.text}();\n\t\t\t}}"; } } var text = string.Format(ReadersFileTemplate, usings, extensions, findReader); var textAsset = AssetDatabase.LoadAssetAtPath <TextAsset>(_settingsFilePath); File.WriteAllText(_settingsFilePath, text); EditorUtility.SetDirty(textAsset); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } EditorGUILayout.Space(); GUILayout.Label("Material Mappers", EditorStyles.boldLabel); GUILayout.Label("Select the Material Mappers according your project rendering pipeline"); EditorGUILayout.Space(); foreach (var materialMapperName in MaterialMapper.RegisteredMappers) { var value = TriLibSettings.GetBool(materialMapperName); var newValue = EditorGUILayout.Toggle(materialMapperName, value); if (newValue != value) { TriLibSettings.SetBool(materialMapperName, newValue); } } CheckMappers.Initialize(); EditorGUILayout.Space(); GUILayout.Label("Misc Options", EditorStyles.boldLabel); GUILayout.Label("Advanced Options"); EditorGUILayout.Space(); ShowConditionalToggle("Enable GLTF Draco Decompression (Experimental)", "TRILIB_DRACO"); ShowConditionalToggle("Force synchronous loading", "TRILIB_FORCE_SYNC"); ShowConditionalToggle("Change Thread names (Debug purposes only)", "TRILIB_USE_THREAD_NAMES"); ShowConditionalToggle("Use Unity internal image loader instead of stb_image (Experimental)", "TRILIB_USE_UNITY_TEXTURE_LOADER"); EditorGUILayout.Space(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Version Notes")) { TriLibVersionNotes.ShowWindow(); } if (GUILayout.Button("API Reference")) { Application.OpenURL("https://ricardoreis.net/trilib/trilib2/docs/"); } if (GUILayout.Button("Support")) { Application.OpenURL("mailto:[email protected]"); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); base.OnGUI(searchContext); }