Пример #1
0
    void CreateNewShaderMaterials(Material currentMat)
    {
        if (m_NewShaderMaterials != null && FXMakerOption.inst.m_bUpdateNewMaterial == false)
        {
            return;
        }

        // Load m_DefaultShaderMaterialsDir
        int nMaterialCount;

        m_NewShaderMaterials        = NgAsset.GetMaterialList(FXMakerMain.inst.GetResourceDir(FXMakerMain.TOOLDIR_TYPE.DEFAULTSHADERMATERIALS), true, 0, out nMaterialCount);
        m_NewShaderMaterialContents = null;

        // Change Texture
        if (m_NewShaderMaterials != null)
        {
            foreach (Material mat in m_NewShaderMaterials)
            {
                NgMaterial.CopyMaterialArgument(currentMat, mat);
            }

            FXMakerAsset.AssetDatabaseSaveAssets();
            m_nTempSaveFrameIndex       = FXMakerMain.inst.GetUnityFrameCount();
            m_NewShaderMaterialContents = new GUIContent[m_NewShaderMaterials.Length];
            // build content
            BuildNewShaderContents();
        }
    }
Пример #2
0
    void DrawBottomMaterialRect(Rect baseRect)
    {
        int      nVMargin    = 4;
        GUIStyle styleBox    = GUI.skin.GetStyle("MaterialList_Box");
        GUIStyle styleButton = GUI.skin.GetStyle("ImageOnly_Button");

        // Draw line
        NgGUIDraw.DrawHorizontalLine(new Vector2(baseRect.x + nVMargin, baseRect.y + nVMargin), (int)baseRect.width, new Color(0.1f, 0.1f, 0.1f, 0.7f), 2, false);

        baseRect = FXMakerLayout.GetOffsetRect(baseRect, 0, nVMargin * 2, 0, -nVMargin);
        int  nObjectCount;
        Rect listRect;
        int  nColumn;
        Rect scrollRect;
        Rect gridRect;
        int  nSelectIndex;
        bool bShowList = true;                          // (0 <= m_nObjectIndex && m_nSelObjectProjectIndex == m_nProjectIndex && m_nGroupIndex == m_nSelObjectGroupIndex);

        // New Shader Material List ------------------------------------------------------
        listRect = FXMakerLayout.GetInnerHorizontalRect(baseRect, 2, 0, 1);
        GUI.Box(listRect, GetHelpContent("New Shader Material"), styleBox);

        if (bShowList && m_NewShaderMaterials != null && 0 < m_NewShaderMaterials.Length)
        {
            listRect     = FXMakerLayout.GetOffsetRect(listRect, 5, 15, -5, -3);
            nColumn      = (int)((listRect.width - 5) / listRect.height * 2.3f);
            nObjectCount = m_NewShaderMaterials.Length;
            scrollRect   = FXMakerLayout.GetAspectScrollViewRect((int)listRect.width, m_fButtonAspect, nObjectCount, nColumn, true);
            gridRect     = FXMakerLayout.GetAspectScrollGridRect((int)listRect.width, m_fButtonAspect, nObjectCount, nColumn, true);

            m_NewShaderMaterialListScrollPos = GUI.BeginScrollView(listRect, m_NewShaderMaterialListScrollPos, scrollRect);
//			nSelectIndex	= GUI.SelectionGrid(gridRect, m_nNewShaderMaterialIndex, m_NewShaderMaterialContents, nColumn, styleButton);
            nSelectIndex = FXMakerLayout.TooltipSelectionGrid(FXMakerLayout.GetOffsetRect(GetPopupRect(), 0, -m_NewShaderMaterialListScrollPos.y), listRect, gridRect, m_nNewShaderMaterialIndex, m_NewShaderMaterialContents, nColumn, styleButton);

            if (m_nNewShaderMaterialIndex != nSelectIndex)
            {
                if (Input.GetMouseButtonUp(1))
                {
                    FXMakerAsset.SetPingObject(m_NewShaderMaterials[nSelectIndex]);
                }
                else
                {
                    m_nNewShaderMaterialIndex = nSelectIndex;
                    if (m_SelectedMaterial != null)
                    {
                        NgMaterial.CopyMaterialArgument(m_SelectedMaterial, m_NewShaderMaterials[nSelectIndex]);
                    }
                    SetActiveMaterial(m_NewShaderMaterials[nSelectIndex], null, true, false);
                }
            }
            GUI.EndScrollView();
        }

        // Found Material List ------------------------------------------------------
        listRect = FXMakerLayout.GetInnerHorizontalRect(baseRect, 2, 1, 1);
        GUI.Box(listRect, GetHelpContent("Found Material"), styleBox);

        if (bShowList && m_CurrentTextureMaterials != null && 0 < m_CurrentTextureMaterials.Length)
        {
            listRect     = FXMakerLayout.GetOffsetRect(listRect, 5, 15, -5, -3);
            nColumn      = (int)((listRect.width - 5) / listRect.height * 2.3f);
            nObjectCount = m_CurrentTextureMaterials.Length;
            scrollRect   = FXMakerLayout.GetAspectScrollViewRect((int)listRect.width, m_fButtonAspect, nObjectCount, nColumn, true);
            gridRect     = FXMakerLayout.GetAspectScrollGridRect((int)listRect.width, m_fButtonAspect, nObjectCount, nColumn, true);

            m_CurrentTextureMaterialListScrollPos = GUI.BeginScrollView(listRect, m_CurrentTextureMaterialListScrollPos, scrollRect);
//			nSelectIndex	= GUI.SelectionGrid(gridRect, m_nCurrentTextureMaterialIndex, m_CurrentTextureMaterialContents, nColumn, styleButton);
            nSelectIndex = FXMakerLayout.TooltipSelectionGrid(FXMakerLayout.GetOffsetRect(GetPopupRect(), 0, -m_CurrentTextureMaterialListScrollPos.y), listRect, gridRect, m_nCurrentTextureMaterialIndex, m_CurrentTextureMaterialContents, nColumn, styleButton);

            if (m_nCurrentTextureMaterialIndex != nSelectIndex)
            {
                if (Input.GetMouseButtonUp(1))
                {
                    FXMakerAsset.SetPingObject(m_NewShaderMaterials[nSelectIndex]);
                }
                else
                {
                    m_nCurrentTextureMaterialIndex = nSelectIndex;
                    SetActiveMaterial(m_CurrentTextureMaterials[nSelectIndex], null, false, false);
                }
            }
            GUI.EndScrollView();
        }
    }