/// <summary> /// フィギュア情報を削除します。 /// </summary> public void Clear() { gvShaderParams.DataSource = null; this.sub_script = null; lvSubScripts.Items.Clear(); this.tso = null; lvTSOFiles.Items.Clear(); this.fig = null; }
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); }
private void lvSubScripts_SelectedIndexChanged(object sender, EventArgs e) { TSOSubScript sub_script = GetSelectedSubScript(); if (sub_script == null) { return; } Debug.WriteLine("selected " + sub_script.Name); }
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); }
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); } } } } }
public void SetSubScript(TSOSubScript sub_script) { this.sub_script = sub_script; gvShaderParams.DataSource = sub_script.shader.shader_parameters; }