Exemplo n.º 1
0
        public void LoadMaterial(FMAT mat)
        {
            if (mat.MaterialU != null)
            {
                TabPage tabPage = null;

                for (int i = 0; i < stTabControl1.TabPages.Count; i++)
                {
                    if (stTabControl1.TabPages[i].Text == "Render State")
                    {
                        tabPage = stTabControl1.TabPages[i];
                    }
                }

                if (tabPage == null)
                {
                    tabPage      = new TabPage();
                    tabPage.Text = "Render State";
                    stTabControl1.TabPages.Add(tabPage);
                    RenderStateEditor      = new RenderStateEditor();
                    RenderStateEditor.Dock = DockStyle.Fill;
                    RenderStateEditor.LoadRenderState(mat.MaterialU.RenderState);
                    tabPage.Controls.Add(RenderStateEditor);
                }
                else
                {
                    RenderStateEditor.LoadRenderState(mat.MaterialU.RenderState);
                }
            }

            material = mat;
            textBoxMaterialName.Text = material.Text;

            SetActiveGameByShader(material.shaderassign.ShaderArchive, material.shaderassign.ShaderModel);

            chkboxVisible.Bind(material, "Enabled");

            FillForm();
        }
Exemplo n.º 2
0
        public void LoadMaterial(FMAT mat)
        {
            if (mat.MaterialU != null)
            {
                TabPage tabPage = null;

                for (int i = 0; i < stTabControl1.TabPages.Count; i++)
                {
                    if (stTabControl1.TabPages[i].Text == "Render State")
                    {
                        tabPage = stTabControl1.TabPages[i];
                    }
                }

                if (tabPage == null)
                {
                    tabPage      = new TabPage();
                    tabPage.Text = "Render State";
                    stTabControl1.TabPages.Add(tabPage);
                    RenderStateEditor      = new RenderStateEditor();
                    RenderStateEditor.Dock = DockStyle.Fill;
                    tabPage.Controls.Add(RenderStateEditor);
                }
                else
                {
                    RenderStateEditor.LoadRenderState(mat.MaterialU.RenderState);
                }
            }

            material = mat;
            textBoxMaterialName.Text = material.Text;

            SetActiveGameByShader(material.shaderassign.ShaderArchive, material.shaderassign.ShaderModel);

            chkboxVisible.Bind(material, "Enabled");

            FillForm();

            uvEditor1.ActiveObjects.Clear();
            uvEditor1.Textures.Clear();

            foreach (var shp in ((FMDL)material.Parent.Parent).shapes)
            {
                if (shp.GetMaterial().Text == material.Text)
                {
                    uvEditor1.ActiveObjects.Add(shp);
                }
            }

            foreach (var ftexContainer in PluginRuntime.ftexContainers)
            {
                foreach (var texmap in material.TextureMaps)
                {
                    if (ftexContainer.ResourceNodes.ContainsKey(texmap.Name))
                    {
                        uvEditor1.Textures.Add(LoadTextureUvMap(texmap, (FTEX)ftexContainer.ResourceNodes[texmap.Name]));
                    }
                }
            }

            foreach (var bntx in PluginRuntime.bntxContainers)
            {
                foreach (var texmap in material.TextureMaps)
                {
                    if (bntx.Textures.ContainsKey(texmap.Name))
                    {
                        uvEditor1.Textures.Add(LoadTextureUvMap(texmap, bntx.Textures[texmap.Name]));
                    }
                }
            }

            uvEditor1.Reset();
            uvEditor1.ActiveMaterial = material;
            uvEditor1.Refresh();
        }