public void setValues(string p_texAid, string p_texBid, int str, CompositeModes mode)
 {
     tex.textureAid    = p_texAid;
     tex.textureAid    = p_texBid;
     tex.strength      = str;
     tex.compositeMode = mode;
 }
Exemplo n.º 2
0
        public void update(string p_textureBID, float p_strength, CompositeModes mode)
        {
            textureBid    = p_textureBID;
            strength      = p_strength;
            compositeMode = mode;

            CompositeTextureData.texturesChanged.Invoke();
        }
Exemplo n.º 3
0
        public static CompositeTexture CreateMyAsset(string p_id, Texture2D p_textureA, Texture2D p_textureB, float p_strength, CompositeModes mode)
        {
            CompositeTexture asset = ScriptableObject.CreateInstance <CompositeTexture>();

            //asset.setValues(texA, texB, str, compositeMode);

            asset.setValues(p_id, p_textureA, p_textureB, p_strength, mode);

            string g    = Guid.NewGuid().ToString();
            string name = g + ".asset";

            CreateFolders();
            AssetDatabase.CreateAsset(asset, "Assets/" + containingFolder + "/" + packageName + "/" + name);
            AssetDatabase.SaveAssets();

            return(asset);
        }
Exemplo n.º 4
0
        public static void updateTexture(string id, string p_textureBID, float p_strength, CompositeModes mode)
        {
            CompositeTexture tex = csList.compositeTextures.Find(x => x.id == id);

            tex.textureBid    = p_textureBID;
            tex.strength      = p_strength;
            tex.compositeMode = mode;
            texturesChanged.Invoke();
            EditorUtility.SetDirty(tex);
            AssetDatabase.SaveAssets();
        }
Exemplo n.º 5
0
        public static void addTexture(string p_id, Texture2D p_textureA, Texture2D p_textureB, float p_strength, CompositeModes mode)
        {
            CompositeTexture tex = CTScriptableObject.CreateMyAsset(p_id, p_textureA, p_textureB, p_strength, mode);

            if (validateTexture(tex))
            {
                csList.compositeTextures.Add(tex);
                //csList.compositeTextures.Sort();
                texturesChanged.Invoke();
                //Save();
            }
            else
            {
                EDebug.Log("texture invalid");
            }
        }
Exemplo n.º 6
0
        void OnGUI()
        {
            EditorGUILayout.BeginVertical("box", GUILayout.Height(150f));

            GUILayout.Label("New Composite Texture", EditorStyles.boldLabel);

            matTemplate = EditorGUILayout.ObjectField("Import from material", matTemplate, typeof(Material), true) as Material;

            GUIStyle style = new GUIStyle(GUI.skin.label);

            style.alignment  = TextAnchor.UpperCenter;
            style.fixedWidth = 70;

            EditorGUILayout.BeginHorizontal();

            EditorGUILayout.BeginVertical();
            GUILayout.Label("Texture A", style);
            textureAToAdd = EditorGUILayout.ObjectField("", textureAToAdd, typeof(Texture2D), false, GUILayout.Width(70), GUILayout.Height(70)) as Texture2D;
            EditorGUILayout.EndVertical();

            EditorGUILayout.BeginVertical();
            GUILayout.Label("Texture B", style);

            textureBToAdd = EditorGUILayout.ObjectField("", textureBToAdd, typeof(Texture2D), false, GUILayout.Width(70), GUILayout.Height(70)) as Texture2D;
            EditorGUILayout.EndVertical();

            EditorGUILayout.BeginVertical();
            GUILayout.Label("Mode");
            cmToAdd = (CompositeModes)EditorGUILayout.Popup("", (int)cmToAdd, modesAsArray, GUILayout.Width(170));

            string texA_guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(textureAToAdd));

            // create texture
            bool texutresInPlace = false;

            if (textureAToAdd != null && textureBToAdd != null)
            {
                if (textureAToAdd.height == textureBToAdd.height && textureAToAdd.width == textureBToAdd.width)
                {
                    texutresInPlace = true;
                }
                else
                {
                    texutresInPlace = true;
                    EDebug.Log("textures not of same size");
                    EditorGUILayout.HelpBox("Texture dimensions don't match", type: MessageType.Info);
                }
            }

            EditorGUI.BeginDisabledGroup(texutresInPlace == false);

            if (GUILayout.Button("Create Composite", GUILayout.Width(170)))
            {
                string errorMsg = CompositeTextureController.createCompositeTexture(texA_guid, textureAToAdd, textureBToAdd, 1f, cmToAdd);

                matTemplate   = null; // clear the previous fields after creating a new CT
                textureAToAdd = null;
                textureBToAdd = null;

                lastAddedCT_ID = texA_guid;
                //shouldScroll = true;

                EDebug.Log(errorMsg);
            }

            EditorGUI.EndDisabledGroup();

            EditorGUILayout.EndVertical();

            EditorGUILayout.EndHorizontal();

            ////////////////// MATERIAL TYPE DETECTION
            if (matTemplate != null)
            {
                textureBToAdd = (Texture2D)matTemplate.GetTexture("_BumpMap");

                String shaderName = matTemplate.shader.name;
                // shaderName Standard (Roughness setup), Standard, Standard (Specular setup)
                //
                //Debug.Log("shadername " + shaderName);

                if (shaderName == "Standard")
                {
                    cmToAdd = CompositeModes.normalToRoughnessRGB;
                }
                else if (shaderName == "Standard (Specular setup)")
                {
                    cmToAdd = CompositeModes.standardShaderSpecularSetup;
                }
                else if (shaderName == "Standard (Roughness setup)")
                {
                    cmToAdd = CompositeModes.normalToRoughnessAlpha;
                }

                if (matTemplate.IsKeywordEnabled("_SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A"))
                {
                    textureAToAdd = (Texture2D)matTemplate.GetTexture("_MainTex");
                }
                else if (matTemplate.HasProperty("_SpecGlossMap"))
                { // standard and roughness setup have this
                    if (matTemplate.GetTexture("_SpecGlossMap") != null)
                    {
                        textureAToAdd = (Texture2D)matTemplate.GetTexture("_SpecGlossMap");
                    }
                }
                else if (matTemplate.HasProperty("_MetallicGlossMap"))
                {
                    if (matTemplate.GetTexture("_MetallicGlossMap") != null)
                    {
                        textureAToAdd = (Texture2D)matTemplate.GetTexture("_MetallicGlossMap");
                    }
                }
                else
                {
                    textureAToAdd = null;
                    textureBToAdd = null;
                }
                matTemplate = null; //clear material area
            }

            EditorGUILayout.EndVertical();

            List <CompositeTexture> removalList = new List <CompositeTexture>();

            float scrollWidth  = position.width;
            float scrollHeight = position.height - 160f;

            scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Width(scrollWidth), GUILayout.Height(scrollHeight));

            float itemHeight = 135f;
            List <CompositeTexture> ctsAll = CompositeTextureData.getTextures();
            List <CompositeTexture> cts    = GetCTinUIVisible(ctsAll, (int)itemHeight, (int)scrollPos.y);

            int fullScrollableHeight = (int)itemHeight * ctsAll.Count;

            GUILayout.BeginVertical("", GUIStyle.none, GUILayout.Height(fullScrollableHeight));

            int firstindex = (int)(scrollPos.y / itemHeight);

            GUILayout.Space(firstindex * itemHeight);

            foreach (CompositeTexture ct in cts)
            {
                if (ct.filesExist() == false)
                {
                    EDebug.Log("missing a file");
                    continue;
                }

                Texture2D texA = ct.getTextureA();
                Texture2D texB = ct.getTextureB();

                Texture2D texPreview = null;

                if (!AssetPreview.IsLoadingAssetPreview(texA.GetInstanceID()))
                {
                    texPreview = AssetPreview.GetMiniThumbnail(texA);
                }


                Rect     lastRect2 = EditorGUILayout.BeginVertical("box", GUILayout.Height(itemHeight));
                GUIStyle lab       = EditorStyles.label;

                if (lastAddedCT_ID == ct.id)
                {
                    lab = EditorStyles.boldLabel;
                }

                if (lastAddedCT_ID == ct.id && shouldScroll)
                {
                    if (lastRect2.y > 0f)
                    {
                        //lastAddedCT_ID = null;
                        EDebug.Log(lastRect2.y);
                        scrollPos    = lastRect2.position;
                        shouldScroll = false;
                    }
                }
                /////////
                GUILayoutOption[] ctrlButtonOptions = new GUILayoutOption[1];
                ctrlButtonOptions[0] = GUILayout.Width(20f);
                GUILayoutOption[] toggleOptions = new GUILayoutOption[1];
                toggleOptions[0] = GUILayout.Width(11f);

                EditorGUILayout.BeginHorizontal();
                var toggle = GUILayout.Toggle(ct.enabled, "", toggleOptions);
                GUILayout.Label(texA.name, lab);



                if (GUILayout.Button("X", ctrlButtonOptions))
                {
                    removalList.Add(ct);
                }



                EditorGUILayout.EndHorizontal();

                if (toggle != ct.enabled)
                {
                    if (ct.enabled == true)
                    {
                        CompositeTextureController.enableTexture(ct.id, false);
                    }
                    else
                    {
                        System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
                        sw.Start();
                        CompositeTextureController.enableTexture(ct.id, true);
                        sw.Stop();

                        EDebug.Log("ELAPSED " + sw.Elapsed.Milliseconds);
                    }
                }

                //if (GUILayout.Button("mark unreadable"))
                //{
                //    texB.setReadable(true);
                //    String assetPath = AssetDatabase.GetAssetPath(texB);
                //    AssetDatabase.ImportAsset(assetPath);

                //}

                EditorGUI.BeginDisabledGroup(ct.enabled == false);

                EditorGUILayout.BeginHorizontal();
                GUILayout.Box(texPreview, GUILayout.Width(105), GUILayout.Height(105));

                EditorGUILayout.BeginVertical(EditorStyles.helpBox);

                EditorGUI.BeginChangeCheck();
                //int texB_ID = EditorGUILayout.ObjectField("composite texture", texB, typeof(Texture2D), true).GetInstanceID();
                string texB_ID = CompositeTexture.assetToGUID((Texture2D)EditorGUILayout.ObjectField("composite texture", texB, typeof(Texture2D), true));

                CompositeModes cm = (CompositeModes)EditorGUILayout.Popup("Composit mode", (int)ct.compositeMode, modesAsArray);

                float strength = EditorGUILayout.FloatField("Strength", ct.strength);

                if (EditorGUI.EndChangeCheck())
                {
                    ct.update(texB_ID, strength, cm);
                    CompositeTextureController.enableTexture(ct.id, true);
                    EDebug.Log("value changed! " + texA.name);
                }

                EditorGUILayout.EndVertical();
                EditorGUILayout.EndHorizontal();

                EditorGUI.EndDisabledGroup();

                EditorGUILayout.EndVertical();
            }
            GUILayout.EndVertical();

            foreach (CompositeTexture ctr in removalList)
            {
                CompositeTextureController.removeTexture(ctr);
            }

            EditorGUILayout.EndScrollView();
        }
Exemplo n.º 7
0
 public static void updateCompositeTexture(string id, string p_textureBID, float p_strength, CompositeModes mode)
 {
     CompositeTextureData.updateTexture(id, p_textureBID, p_strength, mode);
 }
Exemplo n.º 8
0
        // Use this for initialization

        public static string createCompositeTexture(string p_id, Texture2D p_textureA, Texture2D p_textureB, float p_strength, CompositeModes mode)
        {
            float strength = p_strength;

            if (p_textureA.mipmapCount > p_textureB.mipmapCount)
            {
                int sizeDelta = p_textureA.mipmapCount - p_textureB.mipmapCount;
                strength = 1 + (.5f * sizeDelta);
            }

            CompositeTextureData.addTexture(p_id, p_textureA, p_textureB, strength, mode);
            reimportCompositeTexture(p_id);

            return("COMPOSITE TEXTURE ADDED");
        }
Exemplo n.º 9
0
 public static string validateCT(string p_id, Texture2D p_textureA, Texture2D p_textureB, float p_strength, CompositeModes mode)
 {
     return(null);
 }
Exemplo n.º 10
0
 public void setValues(string p_id, Texture2D p_textureA, Texture2D p_textureB, float p_strength, CompositeModes mode)
 {
     id = p_id; textureAid = assetToGUID(p_textureA); textureBid = assetToGUID(p_textureB); strength = p_strength; compositeMode = mode;
 }