Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        public static void AutoSelect()
        {
            foreach (var materialMapperName in MaterialMapper.RegisteredMappers)
            {
                TriLibSettings.SetBool(materialMapperName, false);
            }
            string materialMapper;

            if (GraphicsSettingsUtils.IsUsingHDRPPipeline)
            {
                materialMapper = "HDRPMaterialMapper";
            }
            else if (GraphicsSettingsUtils.IsUsingUniversalPipeline)
            {
                materialMapper = "UniversalRPMaterialMapper";
            }
            else
            {
                materialMapper = "StandardMaterialMapper";
            }
            SelectMapper(materialMapper);
        }
Beispiel #4
0
        public static void AutoSelect()
        {
            foreach (var materialMapperName in MaterialMapper.RegisteredMappers)
            {
                TriLibSettings.SetBool(materialMapperName, false);
            }
            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);
        }
Beispiel #5
0
 public override bool IsCompatible(MaterialMapperContext materialMapperContext)
 {
     return(TriLibSettings.GetBool("UniversalRPMaterialMapper"));
 }
Beispiel #6
0
 public static void SelectMapper(string materialMapper)
 {
     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);
 }
        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);
        }