Beispiel #1
0
 /// <summary>
 /// フィギュア情報を削除します。
 /// </summary>
 public void Clear()
 {
     gvShaderParams.DataSource = null;
     this.sub_script           = null;
     lvSubScripts.Items.Clear();
     this.tso = null;
     lvTSOFiles.Items.Clear();
     this.fig = null;
 }
Beispiel #2
0
        private void lvSubScripts_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lvSubScripts.SelectedItems.Count == 0)
            {
                return;
            }
            ListViewItem li         = lvSubScripts.SelectedItems[0];
            TSOSubScript sub_script = li.Tag as TSOSubScript;

            SetShader(sub_script.shader);
        }
Beispiel #3
0
        private void lvSubScripts_SelectedIndexChanged(object sender, EventArgs e)
        {
            TSOSubScript sub_script = GetSelectedSubScript();

            if (sub_script == null)
            {
                return;
            }

            Debug.WriteLine("selected " + sub_script.Name);
        }
Beispiel #4
0
        public TSOSubScript GetSelectedSubScript()
        {
            if (lvSubScripts.SelectedItems.Count == 0)
            {
                return(null);
            }

            ListViewItem li         = lvSubScripts.SelectedItems[0];
            TSOSubScript sub_script = li.Tag as TSOSubScript;

            return(sub_script);
        }
Beispiel #5
0
        void DrawFigure(Figure fig)
        {
            LightDirForced_variable.Set(fig.LightDirForced());
            foreach (TSOFile tso in fig.TSOFileList)
            {
                int current_spec = -1;

                foreach (TSOMesh mesh in tso.meshes)
                {
                    foreach (TSOSubMesh sub_mesh in mesh.sub_meshes)
                    {
                        TSOSubScript scr = tso.sub_scripts[sub_mesh.spec];

                        if (sub_mesh.spec != current_spec)
                        {
                            current_spec = sub_mesh.spec;

                            cb_variable.SetConstantBuffer(scr.cb);

                            TSOTex shadeTex;
                            if (tso.texmap.TryGetValue(scr.shader.ShadeTexName, out shadeTex))
                            {
                                ShadeTex_texture_variable.SetResource(shadeTex.d3d_tex_SR_view);
                            }

                            TSOTex colorTex;
                            if (tso.texmap.TryGetValue(scr.shader.ColorTexName, out colorTex))
                            {
                                ColorTex_texture_variable.SetResource(colorTex.d3d_tex_SR_view);
                            }
                        }

                        int technique_idx = scr.shader.technique_idx;

                        var technique = effect.GetTechniqueByIndex(technique_idx);
                        if (!technique.IsValid)
                        {
                            string technique_name = scr.shader.technique_name;
                            Console.WriteLine("technique {0} is not valid", technique_name);
                            continue;
                        }

                        LocalBoneMats_variable.SetMatrix(fig.ClipBoneMatrices(sub_mesh));

                        if (!technique.GetPassByIndex(0).IsValid)
                        {
                            Console.WriteLine("pass #0 is not valid");
                            continue;
                        }

                        ctx.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleStrip;
                        ctx.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(sub_mesh.vb, 52, 0));

                        for (int i = 0; i < technique.Description.PassCount; i++)
                        {
                            ctx.OutputMerger.SetBlendState(default_blend_state);
                            ctx.OutputMerger.SetDepthStencilState(default_depth_stencil_state);
                            ctx.Rasterizer.State = default_rasterizer_state;

                            technique.GetPassByIndex(i).Apply(ctx);
                            ctx.Draw(sub_mesh.vertices.Length, 0);
                        }
                    }
                }
            }
        }
Beispiel #6
0
 public void SetSubScript(TSOSubScript sub_script)
 {
     this.sub_script           = sub_script;
     gvShaderParams.DataSource = sub_script.shader.shader_parameters;
 }