diff --git a/CodeWalker.Core/GameFiles/Resources/Frag.cs b/CodeWalker.Core/GameFiles/Resources/Frag.cs index d0b2e09..aadb286 100644 --- a/CodeWalker.Core/GameFiles/Resources/Frag.cs +++ b/CodeWalker.Core/GameFiles/Resources/Frag.cs @@ -198,6 +198,7 @@ namespace CodeWalker.GameFiles AssignChildrenShaders(); + AssignGlassWindowsGroups(); #if DEBUG Analyzer = new ResourceAnalyzer(reader); @@ -666,6 +667,54 @@ namespace CodeWalker.GameFiles } + public void AssignGlassWindowsGroups() + { + + void assign(FragPhysicsLOD lod) + { + if (lod?.Groups?.data_items == null) return; + foreach (var grp in lod.Groups.data_items) + { + var windx = grp.UnkByte52; + var flags = grp.UnkByte53; + if ((flags & 2) > 0) + { + if (GlassWindows?.data_items != null) + { + if (windx < GlassWindows.data_items.Length) + { + var wind = GlassWindows.data_items[windx]; + wind.Group = grp; + wind.GroupLOD = lod; + } + } + } + } + } + assign(PhysicsLODGroup?.PhysicsLOD1); + assign(PhysicsLODGroup?.PhysicsLOD2); + assign(PhysicsLODGroup?.PhysicsLOD3); + + //if (VehicleGlassWindows?.Windows != null) + //{ + // var groups = PhysicsLODGroup?.PhysicsLOD1?.Groups?.data_items; + // if (groups != null) + // { + // var groupdict = new Dictionary(); + // foreach (var grp in groups) + // { + // groupdict[grp.Index] = grp; + // } + // foreach (var wind in VehicleGlassWindows.Windows) + // { + // groupdict.TryGetValue(wind.ItemID, out var grp); + // wind.Group = grp; + // wind.GroupLOD = PhysicsLODGroup.PhysicsLOD1; + // } + // } + //} + + } public override IResourceBlock[] GetReferences() @@ -1113,6 +1162,8 @@ namespace CodeWalker.GameFiles public float UnkFloat22 { get; set; } public uint UnkUint4 = 0x7f800001; // 0x7f800001 + public FragPhysTypeGroup Group { get; set; } + public FragPhysicsLOD GroupLOD { get; set; } public override void Read(ResourceDataReader reader, params object[] parameters) { @@ -1840,6 +1891,23 @@ namespace CodeWalker.GameFiles } + public int GetValue(int x) + { + if (x < 0) return -1; + if (Data1 != null) + { + if (x < Start1) return -1; + var cpos = x - Start1; + if (cpos < Data1.Length) return Data1[cpos]; + } + if (Data2 != null) + { + if (x < Start2) return 256; + var cpos = x - Start2; + if (cpos < Data2.Length) return Data2[cpos]; + } + return -1; + } public override string ToString() { @@ -3933,8 +4001,8 @@ namespace CodeWalker.GameFiles public byte UnkByte4F { get; set; } public byte UnkByte50 { get; set; } public byte UnkByte51 { get; set; } = 255; //0xFF - public byte UnkByte52 { get; set; } - public byte UnkByte53 { get; set; } + public byte UnkByte52 { get; set; }//GlassWindows index + public byte UnkByte53 { get; set; }//flags: 1=?, 2=glass, 4=?, ... public float UnkFloat54 { get; set; } public float UnkFloat58 { get; set; } public float UnkFloat5C { get; set; } diff --git a/CodeWalker/Forms/ModelForm.Designer.cs b/CodeWalker/Forms/ModelForm.Designer.cs index 80b9921..36f638e 100644 --- a/CodeWalker/Forms/ModelForm.Designer.cs +++ b/CodeWalker/Forms/ModelForm.Designer.cs @@ -45,6 +45,11 @@ this.SaveAsMenuButton = new System.Windows.Forms.ToolStripMenuItem(); this.ToolsTabControl = new System.Windows.Forms.TabControl(); this.ToolsModelsTabPage = new System.Windows.Forms.TabPage(); + this.EnableRootMotionCheckBox = new System.Windows.Forms.CheckBox(); + this.label22 = new System.Windows.Forms.Label(); + this.ClipComboBox = new System.Windows.Forms.ComboBox(); + this.label21 = new System.Windows.Forms.Label(); + this.ClipDictComboBox = new System.Windows.Forms.ComboBox(); this.ModelsTreeView = new CodeWalker.WinForms.TreeViewFix(); this.ToolsMaterialsTabPage = new System.Windows.Forms.TabPage(); this.MaterialEditorButton = new System.Windows.Forms.Button(); @@ -82,11 +87,7 @@ this.ToolsDragPanel = new System.Windows.Forms.Panel(); this.ToolsPanelShowButton = new System.Windows.Forms.Button(); this.SaveFileDialog = new System.Windows.Forms.SaveFileDialog(); - this.EnableRootMotionCheckBox = new System.Windows.Forms.CheckBox(); - this.label22 = new System.Windows.Forms.Label(); - this.ClipComboBox = new System.Windows.Forms.ComboBox(); - this.label21 = new System.Windows.Forms.Label(); - this.ClipDictComboBox = new System.Windows.Forms.ComboBox(); + this.FragGlassCheckBox = new System.Windows.Forms.CheckBox(); this.StatusStrip.SuspendLayout(); this.ConsolePanel.SuspendLayout(); this.ToolsPanel.SuspendLayout(); @@ -262,456 +263,6 @@ this.ToolsModelsTabPage.Text = "Models"; this.ToolsModelsTabPage.UseVisualStyleBackColor = true; // - // ModelsTreeView - // - this.ModelsTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.ModelsTreeView.CheckBoxes = true; - this.ModelsTreeView.Location = new System.Drawing.Point(0, 3); - this.ModelsTreeView.Name = "ModelsTreeView"; - this.ModelsTreeView.ShowRootLines = false; - this.ModelsTreeView.Size = new System.Drawing.Size(217, 422); - this.ModelsTreeView.TabIndex = 1; - this.ModelsTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.ModelsTreeView_AfterCheck); - this.ModelsTreeView.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.ModelsTreeView_NodeMouseDoubleClick); - this.ModelsTreeView.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.ModelsTreeView_KeyPress); - // - // ToolsMaterialsTabPage - // - this.ToolsMaterialsTabPage.Controls.Add(this.MaterialEditorButton); - this.ToolsMaterialsTabPage.Controls.Add(this.TextureViewerButton); - this.ToolsMaterialsTabPage.Controls.Add(this.TexturesTreeView); - this.ToolsMaterialsTabPage.Location = new System.Drawing.Point(4, 22); - this.ToolsMaterialsTabPage.Name = "ToolsMaterialsTabPage"; - this.ToolsMaterialsTabPage.Padding = new System.Windows.Forms.Padding(3); - this.ToolsMaterialsTabPage.Size = new System.Drawing.Size(205, 500); - this.ToolsMaterialsTabPage.TabIndex = 1; - this.ToolsMaterialsTabPage.Text = "Materials"; - this.ToolsMaterialsTabPage.UseVisualStyleBackColor = true; - // - // MaterialEditorButton - // - this.MaterialEditorButton.Location = new System.Drawing.Point(3, 6); - this.MaterialEditorButton.Name = "MaterialEditorButton"; - this.MaterialEditorButton.Size = new System.Drawing.Size(91, 23); - this.MaterialEditorButton.TabIndex = 3; - this.MaterialEditorButton.Text = "Material editor"; - this.MaterialEditorButton.UseVisualStyleBackColor = true; - this.MaterialEditorButton.Click += new System.EventHandler(this.MaterialEditorButton_Click); - // - // TextureViewerButton - // - this.TextureViewerButton.Location = new System.Drawing.Point(111, 6); - this.TextureViewerButton.Name = "TextureViewerButton"; - this.TextureViewerButton.Size = new System.Drawing.Size(91, 23); - this.TextureViewerButton.TabIndex = 2; - this.TextureViewerButton.Text = "Texture viewer"; - this.TextureViewerButton.UseVisualStyleBackColor = true; - this.TextureViewerButton.Click += new System.EventHandler(this.TextureViewerButton_Click); - // - // TexturesTreeView - // - this.TexturesTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.TexturesTreeView.Location = new System.Drawing.Point(0, 34); - this.TexturesTreeView.Name = "TexturesTreeView"; - this.TexturesTreeView.ShowRootLines = false; - this.TexturesTreeView.Size = new System.Drawing.Size(205, 466); - this.TexturesTreeView.TabIndex = 1; - // - // ToolsDetailsTabPage - // - this.ToolsDetailsTabPage.Controls.Add(this.DetailsPropertyGrid); - this.ToolsDetailsTabPage.Location = new System.Drawing.Point(4, 22); - this.ToolsDetailsTabPage.Name = "ToolsDetailsTabPage"; - this.ToolsDetailsTabPage.Size = new System.Drawing.Size(205, 500); - this.ToolsDetailsTabPage.TabIndex = 2; - this.ToolsDetailsTabPage.Text = "Details"; - this.ToolsDetailsTabPage.UseVisualStyleBackColor = true; - // - // DetailsPropertyGrid - // - this.DetailsPropertyGrid.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.DetailsPropertyGrid.HelpVisible = false; - this.DetailsPropertyGrid.Location = new System.Drawing.Point(0, 3); - this.DetailsPropertyGrid.Name = "DetailsPropertyGrid"; - this.DetailsPropertyGrid.PropertySort = System.Windows.Forms.PropertySort.NoSort; - this.DetailsPropertyGrid.ReadOnly = true; - this.DetailsPropertyGrid.Size = new System.Drawing.Size(205, 497); - this.DetailsPropertyGrid.TabIndex = 1; - this.DetailsPropertyGrid.ToolbarVisible = false; - // - // ToolsOptionsTabPage - // - this.ToolsOptionsTabPage.Controls.Add(this.HDTexturesCheckBox); - this.ToolsOptionsTabPage.Controls.Add(this.SkeletonsCheckBox); - this.ToolsOptionsTabPage.Controls.Add(this.TimeOfDayLabel); - this.ToolsOptionsTabPage.Controls.Add(this.label19); - this.ToolsOptionsTabPage.Controls.Add(this.TimeOfDayTrackBar); - this.ToolsOptionsTabPage.Controls.Add(this.ControlLightDirCheckBox); - this.ToolsOptionsTabPage.Controls.Add(this.ShowCollisionMeshesCheckBox); - this.ToolsOptionsTabPage.Controls.Add(this.GridCheckBox); - this.ToolsOptionsTabPage.Controls.Add(this.GridCountComboBox); - this.ToolsOptionsTabPage.Controls.Add(this.label2); - this.ToolsOptionsTabPage.Controls.Add(this.GridSizeComboBox); - this.ToolsOptionsTabPage.Controls.Add(this.label1); - this.ToolsOptionsTabPage.Controls.Add(this.StatusBarCheckBox); - this.ToolsOptionsTabPage.Controls.Add(this.ErrorConsoleCheckBox); - this.ToolsOptionsTabPage.Controls.Add(this.HDRRenderingCheckBox); - this.ToolsOptionsTabPage.Controls.Add(this.SkydomeCheckBox); - this.ToolsOptionsTabPage.Controls.Add(this.ShadowsCheckBox); - this.ToolsOptionsTabPage.Controls.Add(this.WireframeCheckBox); - this.ToolsOptionsTabPage.Controls.Add(this.RenderModeComboBox); - this.ToolsOptionsTabPage.Controls.Add(this.label11); - this.ToolsOptionsTabPage.Controls.Add(this.TextureSamplerComboBox); - this.ToolsOptionsTabPage.Controls.Add(this.TextureCoordsComboBox); - this.ToolsOptionsTabPage.Controls.Add(this.label10); - this.ToolsOptionsTabPage.Controls.Add(this.AnisotropicFilteringCheckBox); - this.ToolsOptionsTabPage.Controls.Add(this.label14); - this.ToolsOptionsTabPage.Location = new System.Drawing.Point(4, 22); - this.ToolsOptionsTabPage.Name = "ToolsOptionsTabPage"; - this.ToolsOptionsTabPage.Size = new System.Drawing.Size(205, 500); - this.ToolsOptionsTabPage.TabIndex = 3; - this.ToolsOptionsTabPage.Text = "Options"; - this.ToolsOptionsTabPage.UseVisualStyleBackColor = true; - // - // HDTexturesCheckBox - // - this.HDTexturesCheckBox.AutoSize = true; - this.HDTexturesCheckBox.Checked = true; - this.HDTexturesCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; - this.HDTexturesCheckBox.Location = new System.Drawing.Point(19, 242); - this.HDTexturesCheckBox.Name = "HDTexturesCheckBox"; - this.HDTexturesCheckBox.Size = new System.Drawing.Size(82, 17); - this.HDTexturesCheckBox.TabIndex = 10; - this.HDTexturesCheckBox.Text = "HD textures"; - this.HDTexturesCheckBox.UseVisualStyleBackColor = true; - this.HDTexturesCheckBox.CheckedChanged += new System.EventHandler(this.HDTexturesCheckBox_CheckedChanged); - // - // SkeletonsCheckBox - // - this.SkeletonsCheckBox.AutoSize = true; - this.SkeletonsCheckBox.Location = new System.Drawing.Point(19, 444); - this.SkeletonsCheckBox.Name = "SkeletonsCheckBox"; - this.SkeletonsCheckBox.Size = new System.Drawing.Size(103, 17); - this.SkeletonsCheckBox.TabIndex = 22; - this.SkeletonsCheckBox.Text = "Show Skeletons"; - this.SkeletonsCheckBox.UseVisualStyleBackColor = true; - this.SkeletonsCheckBox.CheckedChanged += new System.EventHandler(this.SkeletonsCheckBox_CheckedChanged); - // - // TimeOfDayLabel - // - this.TimeOfDayLabel.AutoSize = true; - this.TimeOfDayLabel.Location = new System.Drawing.Point(78, 109); - this.TimeOfDayLabel.Name = "TimeOfDayLabel"; - this.TimeOfDayLabel.Size = new System.Drawing.Size(34, 13); - this.TimeOfDayLabel.TabIndex = 5; - this.TimeOfDayLabel.Text = "12:00"; - // - // label19 - // - this.label19.AutoSize = true; - this.label19.Location = new System.Drawing.Point(7, 109); - this.label19.Name = "label19"; - this.label19.Size = new System.Drawing.Size(65, 13); - this.label19.TabIndex = 4; - this.label19.Text = "Time of day:"; - // - // TimeOfDayTrackBar - // - this.TimeOfDayTrackBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.TimeOfDayTrackBar.BackColor = System.Drawing.SystemColors.ControlLightLight; - this.TimeOfDayTrackBar.LargeChange = 60; - this.TimeOfDayTrackBar.Location = new System.Drawing.Point(9, 125); - this.TimeOfDayTrackBar.Maximum = 1440; - this.TimeOfDayTrackBar.Name = "TimeOfDayTrackBar"; - this.TimeOfDayTrackBar.Size = new System.Drawing.Size(188, 45); - this.TimeOfDayTrackBar.TabIndex = 6; - this.TimeOfDayTrackBar.TickFrequency = 60; - this.TimeOfDayTrackBar.Value = 720; - this.TimeOfDayTrackBar.Scroll += new System.EventHandler(this.TimeOfDayTrackBar_Scroll); - // - // ControlLightDirCheckBox - // - this.ControlLightDirCheckBox.AutoSize = true; - this.ControlLightDirCheckBox.Location = new System.Drawing.Point(19, 83); - this.ControlLightDirCheckBox.Name = "ControlLightDirCheckBox"; - this.ControlLightDirCheckBox.Size = new System.Drawing.Size(124, 17); - this.ControlLightDirCheckBox.TabIndex = 3; - this.ControlLightDirCheckBox.Text = "Control light direction"; - this.ControlLightDirCheckBox.UseVisualStyleBackColor = true; - this.ControlLightDirCheckBox.CheckedChanged += new System.EventHandler(this.ControlLightDirCheckBox_CheckedChanged); - // - // ShowCollisionMeshesCheckBox - // - this.ShowCollisionMeshesCheckBox.AutoSize = true; - this.ShowCollisionMeshesCheckBox.Location = new System.Drawing.Point(19, 173); - this.ShowCollisionMeshesCheckBox.Name = "ShowCollisionMeshesCheckBox"; - this.ShowCollisionMeshesCheckBox.Size = new System.Drawing.Size(132, 17); - this.ShowCollisionMeshesCheckBox.TabIndex = 7; - this.ShowCollisionMeshesCheckBox.Text = "Show collision meshes"; - this.ShowCollisionMeshesCheckBox.UseVisualStyleBackColor = true; - this.ShowCollisionMeshesCheckBox.CheckedChanged += new System.EventHandler(this.ShowCollisionMeshesCheckBox_CheckedChanged); - // - // GridCheckBox - // - this.GridCheckBox.AutoSize = true; - this.GridCheckBox.Location = new System.Drawing.Point(19, 364); - this.GridCheckBox.Name = "GridCheckBox"; - this.GridCheckBox.Size = new System.Drawing.Size(45, 17); - this.GridCheckBox.TabIndex = 17; - this.GridCheckBox.Text = "Grid"; - this.GridCheckBox.UseVisualStyleBackColor = true; - this.GridCheckBox.CheckedChanged += new System.EventHandler(this.GridCheckBox_CheckedChanged); - // - // GridCountComboBox - // - this.GridCountComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.GridCountComboBox.FormattingEnabled = true; - this.GridCountComboBox.Items.AddRange(new object[] { - "20", - "40", - "60", - "100"}); - this.GridCountComboBox.Location = new System.Drawing.Point(83, 411); - this.GridCountComboBox.Name = "GridCountComboBox"; - this.GridCountComboBox.Size = new System.Drawing.Size(114, 21); - this.GridCountComboBox.TabIndex = 21; - this.GridCountComboBox.SelectedIndexChanged += new System.EventHandler(this.GridCountComboBox_SelectedIndexChanged); - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(7, 414); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(59, 13); - this.label2.TabIndex = 20; - this.label2.Text = "Grid count:"; - // - // GridSizeComboBox - // - this.GridSizeComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.GridSizeComboBox.FormattingEnabled = true; - this.GridSizeComboBox.Items.AddRange(new object[] { - "0.1", - "1.0", - "10", - "100"}); - this.GridSizeComboBox.Location = new System.Drawing.Point(83, 384); - this.GridSizeComboBox.Name = "GridSizeComboBox"; - this.GridSizeComboBox.Size = new System.Drawing.Size(114, 21); - this.GridSizeComboBox.TabIndex = 19; - this.GridSizeComboBox.SelectedIndexChanged += new System.EventHandler(this.GridSizeComboBox_SelectedIndexChanged); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(7, 387); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(70, 13); - this.label1.TabIndex = 18; - this.label1.Text = "Grid unit size:"; - // - // StatusBarCheckBox - // - this.StatusBarCheckBox.AutoSize = true; - this.StatusBarCheckBox.Checked = true; - this.StatusBarCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; - this.StatusBarCheckBox.Location = new System.Drawing.Point(19, 480); - this.StatusBarCheckBox.Name = "StatusBarCheckBox"; - this.StatusBarCheckBox.Size = new System.Drawing.Size(74, 17); - this.StatusBarCheckBox.TabIndex = 23; - this.StatusBarCheckBox.Text = "Status bar"; - this.StatusBarCheckBox.UseVisualStyleBackColor = true; - this.StatusBarCheckBox.CheckedChanged += new System.EventHandler(this.StatusBarCheckBox_CheckedChanged); - // - // ErrorConsoleCheckBox - // - this.ErrorConsoleCheckBox.AutoSize = true; - this.ErrorConsoleCheckBox.Location = new System.Drawing.Point(105, 480); - this.ErrorConsoleCheckBox.Name = "ErrorConsoleCheckBox"; - this.ErrorConsoleCheckBox.Size = new System.Drawing.Size(88, 17); - this.ErrorConsoleCheckBox.TabIndex = 24; - this.ErrorConsoleCheckBox.Text = "Error console"; - this.ErrorConsoleCheckBox.UseVisualStyleBackColor = true; - this.ErrorConsoleCheckBox.CheckedChanged += new System.EventHandler(this.ErrorConsoleCheckBox_CheckedChanged); - // - // HDRRenderingCheckBox - // - this.HDRRenderingCheckBox.AutoSize = true; - this.HDRRenderingCheckBox.Checked = true; - this.HDRRenderingCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; - this.HDRRenderingCheckBox.Location = new System.Drawing.Point(19, 14); - this.HDRRenderingCheckBox.Name = "HDRRenderingCheckBox"; - this.HDRRenderingCheckBox.Size = new System.Drawing.Size(97, 17); - this.HDRRenderingCheckBox.TabIndex = 0; - this.HDRRenderingCheckBox.Text = "HDR rendering"; - this.HDRRenderingCheckBox.UseVisualStyleBackColor = true; - this.HDRRenderingCheckBox.CheckedChanged += new System.EventHandler(this.HDRRenderingCheckBox_CheckedChanged); - // - // SkydomeCheckBox - // - this.SkydomeCheckBox.AutoSize = true; - this.SkydomeCheckBox.Location = new System.Drawing.Point(19, 60); - this.SkydomeCheckBox.Name = "SkydomeCheckBox"; - this.SkydomeCheckBox.Size = new System.Drawing.Size(70, 17); - this.SkydomeCheckBox.TabIndex = 2; - this.SkydomeCheckBox.Text = "Skydome"; - this.SkydomeCheckBox.UseVisualStyleBackColor = true; - this.SkydomeCheckBox.CheckedChanged += new System.EventHandler(this.SkydomeCheckBox_CheckedChanged); - // - // ShadowsCheckBox - // - this.ShadowsCheckBox.AutoSize = true; - this.ShadowsCheckBox.Checked = true; - this.ShadowsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; - this.ShadowsCheckBox.Location = new System.Drawing.Point(19, 37); - this.ShadowsCheckBox.Name = "ShadowsCheckBox"; - this.ShadowsCheckBox.Size = new System.Drawing.Size(70, 17); - this.ShadowsCheckBox.TabIndex = 1; - this.ShadowsCheckBox.Text = "Shadows"; - this.ShadowsCheckBox.UseVisualStyleBackColor = true; - this.ShadowsCheckBox.CheckedChanged += new System.EventHandler(this.ShadowsCheckBox_CheckedChanged); - // - // WireframeCheckBox - // - this.WireframeCheckBox.AutoSize = true; - this.WireframeCheckBox.Location = new System.Drawing.Point(19, 196); - this.WireframeCheckBox.Name = "WireframeCheckBox"; - this.WireframeCheckBox.Size = new System.Drawing.Size(74, 17); - this.WireframeCheckBox.TabIndex = 8; - this.WireframeCheckBox.Text = "Wireframe"; - this.WireframeCheckBox.UseVisualStyleBackColor = true; - this.WireframeCheckBox.CheckedChanged += new System.EventHandler(this.WireframeCheckBox_CheckedChanged); - // - // RenderModeComboBox - // - this.RenderModeComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.RenderModeComboBox.FormattingEnabled = true; - this.RenderModeComboBox.Items.AddRange(new object[] { - "Default", - "Single texture", - "Vertex normals", - "Vertex tangents", - "Vertex colour 1", - "Vertex colour 2", - "Texture coord 1", - "Texture coord 2", - "Texture coord 3"}); - this.RenderModeComboBox.Location = new System.Drawing.Point(83, 274); - this.RenderModeComboBox.Name = "RenderModeComboBox"; - this.RenderModeComboBox.Size = new System.Drawing.Size(114, 21); - this.RenderModeComboBox.TabIndex = 12; - this.RenderModeComboBox.SelectedIndexChanged += new System.EventHandler(this.RenderModeComboBox_SelectedIndexChanged); - // - // label11 - // - this.label11.AutoSize = true; - this.label11.Location = new System.Drawing.Point(7, 304); - this.label11.Name = "label11"; - this.label11.Size = new System.Drawing.Size(67, 13); - this.label11.TabIndex = 13; - this.label11.Text = "Tex sampler:"; - // - // TextureSamplerComboBox - // - this.TextureSamplerComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.TextureSamplerComboBox.Enabled = false; - this.TextureSamplerComboBox.FormattingEnabled = true; - this.TextureSamplerComboBox.Location = new System.Drawing.Point(83, 301); - this.TextureSamplerComboBox.Name = "TextureSamplerComboBox"; - this.TextureSamplerComboBox.Size = new System.Drawing.Size(114, 21); - this.TextureSamplerComboBox.TabIndex = 14; - this.TextureSamplerComboBox.SelectedIndexChanged += new System.EventHandler(this.TextureSamplerComboBox_SelectedIndexChanged); - // - // TextureCoordsComboBox - // - this.TextureCoordsComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.TextureCoordsComboBox.Enabled = false; - this.TextureCoordsComboBox.FormattingEnabled = true; - this.TextureCoordsComboBox.Items.AddRange(new object[] { - "Texture coord 1", - "Texture coord 2", - "Texture coord 3"}); - this.TextureCoordsComboBox.Location = new System.Drawing.Point(83, 328); - this.TextureCoordsComboBox.Name = "TextureCoordsComboBox"; - this.TextureCoordsComboBox.Size = new System.Drawing.Size(114, 21); - this.TextureCoordsComboBox.TabIndex = 16; - this.TextureCoordsComboBox.SelectedIndexChanged += new System.EventHandler(this.TextureCoordsComboBox_SelectedIndexChanged); - // - // label10 - // - this.label10.AutoSize = true; - this.label10.Location = new System.Drawing.Point(7, 277); - this.label10.Name = "label10"; - this.label10.Size = new System.Drawing.Size(74, 13); - this.label10.TabIndex = 11; - this.label10.Text = "Render mode:"; - // - // AnisotropicFilteringCheckBox - // - this.AnisotropicFilteringCheckBox.AutoSize = true; - this.AnisotropicFilteringCheckBox.Checked = true; - this.AnisotropicFilteringCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; - this.AnisotropicFilteringCheckBox.Location = new System.Drawing.Point(19, 219); - this.AnisotropicFilteringCheckBox.Name = "AnisotropicFilteringCheckBox"; - this.AnisotropicFilteringCheckBox.Size = new System.Drawing.Size(114, 17); - this.AnisotropicFilteringCheckBox.TabIndex = 9; - this.AnisotropicFilteringCheckBox.Text = "Anisotropic filtering"; - this.AnisotropicFilteringCheckBox.UseVisualStyleBackColor = true; - this.AnisotropicFilteringCheckBox.CheckedChanged += new System.EventHandler(this.AnisotropicFilteringCheckBox_CheckedChanged); - // - // label14 - // - this.label14.AutoSize = true; - this.label14.Location = new System.Drawing.Point(7, 331); - this.label14.Name = "label14"; - this.label14.Size = new System.Drawing.Size(63, 13); - this.label14.TabIndex = 15; - this.label14.Text = "Tex coords:"; - // - // ToolsPanelHideButton - // - this.ToolsPanelHideButton.Location = new System.Drawing.Point(3, 3); - this.ToolsPanelHideButton.Name = "ToolsPanelHideButton"; - this.ToolsPanelHideButton.Size = new System.Drawing.Size(30, 23); - this.ToolsPanelHideButton.TabIndex = 0; - this.ToolsPanelHideButton.Text = "<<"; - this.ToolsPanelHideButton.UseVisualStyleBackColor = true; - this.ToolsPanelHideButton.Click += new System.EventHandler(this.ToolsPanelHideButton_Click); - // - // ToolsDragPanel - // - this.ToolsDragPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Right))); - this.ToolsDragPanel.Cursor = System.Windows.Forms.Cursors.VSplit; - this.ToolsDragPanel.Location = new System.Drawing.Point(227, 0); - this.ToolsDragPanel.Name = "ToolsDragPanel"; - this.ToolsDragPanel.Size = new System.Drawing.Size(4, 559); - this.ToolsDragPanel.TabIndex = 17; - this.ToolsDragPanel.MouseDown += new System.Windows.Forms.MouseEventHandler(this.ToolsDragPanel_MouseDown); - this.ToolsDragPanel.MouseMove += new System.Windows.Forms.MouseEventHandler(this.ToolsDragPanel_MouseMove); - this.ToolsDragPanel.MouseUp += new System.Windows.Forms.MouseEventHandler(this.ToolsDragPanel_MouseUp); - // - // ToolsPanelShowButton - // - this.ToolsPanelShowButton.Location = new System.Drawing.Point(15, 15); - this.ToolsPanelShowButton.Name = "ToolsPanelShowButton"; - this.ToolsPanelShowButton.Size = new System.Drawing.Size(30, 23); - this.ToolsPanelShowButton.TabIndex = 0; - this.ToolsPanelShowButton.Text = ">>"; - this.ToolsPanelShowButton.UseVisualStyleBackColor = true; - this.ToolsPanelShowButton.Click += new System.EventHandler(this.ToolsPanelShowButton_Click); - // - // SaveFileDialog - // - this.SaveFileDialog.Filter = "All files|*.*"; - // // EnableRootMotionCheckBox // this.EnableRootMotionCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); @@ -770,6 +321,468 @@ this.ClipDictComboBox.TabIndex = 33; this.ClipDictComboBox.TextChanged += new System.EventHandler(this.ClipDictComboBox_TextChanged); // + // ModelsTreeView + // + this.ModelsTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.ModelsTreeView.CheckBoxes = true; + this.ModelsTreeView.Location = new System.Drawing.Point(0, 3); + this.ModelsTreeView.Name = "ModelsTreeView"; + this.ModelsTreeView.ShowRootLines = false; + this.ModelsTreeView.Size = new System.Drawing.Size(217, 422); + this.ModelsTreeView.TabIndex = 1; + this.ModelsTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.ModelsTreeView_AfterCheck); + this.ModelsTreeView.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.ModelsTreeView_NodeMouseDoubleClick); + this.ModelsTreeView.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.ModelsTreeView_KeyPress); + // + // ToolsMaterialsTabPage + // + this.ToolsMaterialsTabPage.Controls.Add(this.MaterialEditorButton); + this.ToolsMaterialsTabPage.Controls.Add(this.TextureViewerButton); + this.ToolsMaterialsTabPage.Controls.Add(this.TexturesTreeView); + this.ToolsMaterialsTabPage.Location = new System.Drawing.Point(4, 22); + this.ToolsMaterialsTabPage.Name = "ToolsMaterialsTabPage"; + this.ToolsMaterialsTabPage.Padding = new System.Windows.Forms.Padding(3); + this.ToolsMaterialsTabPage.Size = new System.Drawing.Size(217, 500); + this.ToolsMaterialsTabPage.TabIndex = 1; + this.ToolsMaterialsTabPage.Text = "Materials"; + this.ToolsMaterialsTabPage.UseVisualStyleBackColor = true; + // + // MaterialEditorButton + // + this.MaterialEditorButton.Location = new System.Drawing.Point(3, 6); + this.MaterialEditorButton.Name = "MaterialEditorButton"; + this.MaterialEditorButton.Size = new System.Drawing.Size(91, 23); + this.MaterialEditorButton.TabIndex = 3; + this.MaterialEditorButton.Text = "Material editor"; + this.MaterialEditorButton.UseVisualStyleBackColor = true; + this.MaterialEditorButton.Click += new System.EventHandler(this.MaterialEditorButton_Click); + // + // TextureViewerButton + // + this.TextureViewerButton.Location = new System.Drawing.Point(111, 6); + this.TextureViewerButton.Name = "TextureViewerButton"; + this.TextureViewerButton.Size = new System.Drawing.Size(91, 23); + this.TextureViewerButton.TabIndex = 2; + this.TextureViewerButton.Text = "Texture viewer"; + this.TextureViewerButton.UseVisualStyleBackColor = true; + this.TextureViewerButton.Click += new System.EventHandler(this.TextureViewerButton_Click); + // + // TexturesTreeView + // + this.TexturesTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TexturesTreeView.Location = new System.Drawing.Point(0, 34); + this.TexturesTreeView.Name = "TexturesTreeView"; + this.TexturesTreeView.ShowRootLines = false; + this.TexturesTreeView.Size = new System.Drawing.Size(205, 466); + this.TexturesTreeView.TabIndex = 1; + // + // ToolsDetailsTabPage + // + this.ToolsDetailsTabPage.Controls.Add(this.DetailsPropertyGrid); + this.ToolsDetailsTabPage.Location = new System.Drawing.Point(4, 22); + this.ToolsDetailsTabPage.Name = "ToolsDetailsTabPage"; + this.ToolsDetailsTabPage.Size = new System.Drawing.Size(217, 500); + this.ToolsDetailsTabPage.TabIndex = 2; + this.ToolsDetailsTabPage.Text = "Details"; + this.ToolsDetailsTabPage.UseVisualStyleBackColor = true; + // + // DetailsPropertyGrid + // + this.DetailsPropertyGrid.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.DetailsPropertyGrid.HelpVisible = false; + this.DetailsPropertyGrid.Location = new System.Drawing.Point(0, 3); + this.DetailsPropertyGrid.Name = "DetailsPropertyGrid"; + this.DetailsPropertyGrid.PropertySort = System.Windows.Forms.PropertySort.NoSort; + this.DetailsPropertyGrid.ReadOnly = true; + this.DetailsPropertyGrid.Size = new System.Drawing.Size(205, 497); + this.DetailsPropertyGrid.TabIndex = 1; + this.DetailsPropertyGrid.ToolbarVisible = false; + // + // ToolsOptionsTabPage + // + this.ToolsOptionsTabPage.Controls.Add(this.FragGlassCheckBox); + this.ToolsOptionsTabPage.Controls.Add(this.HDTexturesCheckBox); + this.ToolsOptionsTabPage.Controls.Add(this.SkeletonsCheckBox); + this.ToolsOptionsTabPage.Controls.Add(this.TimeOfDayLabel); + this.ToolsOptionsTabPage.Controls.Add(this.label19); + this.ToolsOptionsTabPage.Controls.Add(this.TimeOfDayTrackBar); + this.ToolsOptionsTabPage.Controls.Add(this.ControlLightDirCheckBox); + this.ToolsOptionsTabPage.Controls.Add(this.ShowCollisionMeshesCheckBox); + this.ToolsOptionsTabPage.Controls.Add(this.GridCheckBox); + this.ToolsOptionsTabPage.Controls.Add(this.GridCountComboBox); + this.ToolsOptionsTabPage.Controls.Add(this.label2); + this.ToolsOptionsTabPage.Controls.Add(this.GridSizeComboBox); + this.ToolsOptionsTabPage.Controls.Add(this.label1); + this.ToolsOptionsTabPage.Controls.Add(this.StatusBarCheckBox); + this.ToolsOptionsTabPage.Controls.Add(this.ErrorConsoleCheckBox); + this.ToolsOptionsTabPage.Controls.Add(this.HDRRenderingCheckBox); + this.ToolsOptionsTabPage.Controls.Add(this.SkydomeCheckBox); + this.ToolsOptionsTabPage.Controls.Add(this.ShadowsCheckBox); + this.ToolsOptionsTabPage.Controls.Add(this.WireframeCheckBox); + this.ToolsOptionsTabPage.Controls.Add(this.RenderModeComboBox); + this.ToolsOptionsTabPage.Controls.Add(this.label11); + this.ToolsOptionsTabPage.Controls.Add(this.TextureSamplerComboBox); + this.ToolsOptionsTabPage.Controls.Add(this.TextureCoordsComboBox); + this.ToolsOptionsTabPage.Controls.Add(this.label10); + this.ToolsOptionsTabPage.Controls.Add(this.AnisotropicFilteringCheckBox); + this.ToolsOptionsTabPage.Controls.Add(this.label14); + this.ToolsOptionsTabPage.Location = new System.Drawing.Point(4, 22); + this.ToolsOptionsTabPage.Name = "ToolsOptionsTabPage"; + this.ToolsOptionsTabPage.Size = new System.Drawing.Size(217, 500); + this.ToolsOptionsTabPage.TabIndex = 3; + this.ToolsOptionsTabPage.Text = "Options"; + this.ToolsOptionsTabPage.UseVisualStyleBackColor = true; + // + // HDTexturesCheckBox + // + this.HDTexturesCheckBox.AutoSize = true; + this.HDTexturesCheckBox.Checked = true; + this.HDTexturesCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; + this.HDTexturesCheckBox.Location = new System.Drawing.Point(19, 231); + this.HDTexturesCheckBox.Name = "HDTexturesCheckBox"; + this.HDTexturesCheckBox.Size = new System.Drawing.Size(82, 17); + this.HDTexturesCheckBox.TabIndex = 10; + this.HDTexturesCheckBox.Text = "HD textures"; + this.HDTexturesCheckBox.UseVisualStyleBackColor = true; + this.HDTexturesCheckBox.CheckedChanged += new System.EventHandler(this.HDTexturesCheckBox_CheckedChanged); + // + // SkeletonsCheckBox + // + this.SkeletonsCheckBox.AutoSize = true; + this.SkeletonsCheckBox.Location = new System.Drawing.Point(19, 426); + this.SkeletonsCheckBox.Name = "SkeletonsCheckBox"; + this.SkeletonsCheckBox.Size = new System.Drawing.Size(103, 17); + this.SkeletonsCheckBox.TabIndex = 22; + this.SkeletonsCheckBox.Text = "Show Skeletons"; + this.SkeletonsCheckBox.UseVisualStyleBackColor = true; + this.SkeletonsCheckBox.CheckedChanged += new System.EventHandler(this.SkeletonsCheckBox_CheckedChanged); + // + // TimeOfDayLabel + // + this.TimeOfDayLabel.AutoSize = true; + this.TimeOfDayLabel.Location = new System.Drawing.Point(78, 99); + this.TimeOfDayLabel.Name = "TimeOfDayLabel"; + this.TimeOfDayLabel.Size = new System.Drawing.Size(34, 13); + this.TimeOfDayLabel.TabIndex = 5; + this.TimeOfDayLabel.Text = "12:00"; + // + // label19 + // + this.label19.AutoSize = true; + this.label19.Location = new System.Drawing.Point(7, 99); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(65, 13); + this.label19.TabIndex = 4; + this.label19.Text = "Time of day:"; + // + // TimeOfDayTrackBar + // + this.TimeOfDayTrackBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TimeOfDayTrackBar.BackColor = System.Drawing.SystemColors.ControlLightLight; + this.TimeOfDayTrackBar.LargeChange = 60; + this.TimeOfDayTrackBar.Location = new System.Drawing.Point(9, 115); + this.TimeOfDayTrackBar.Maximum = 1440; + this.TimeOfDayTrackBar.Name = "TimeOfDayTrackBar"; + this.TimeOfDayTrackBar.Size = new System.Drawing.Size(188, 45); + this.TimeOfDayTrackBar.TabIndex = 6; + this.TimeOfDayTrackBar.TickFrequency = 60; + this.TimeOfDayTrackBar.Value = 720; + this.TimeOfDayTrackBar.Scroll += new System.EventHandler(this.TimeOfDayTrackBar_Scroll); + // + // ControlLightDirCheckBox + // + this.ControlLightDirCheckBox.AutoSize = true; + this.ControlLightDirCheckBox.Location = new System.Drawing.Point(19, 77); + this.ControlLightDirCheckBox.Name = "ControlLightDirCheckBox"; + this.ControlLightDirCheckBox.Size = new System.Drawing.Size(124, 17); + this.ControlLightDirCheckBox.TabIndex = 3; + this.ControlLightDirCheckBox.Text = "Control light direction"; + this.ControlLightDirCheckBox.UseVisualStyleBackColor = true; + this.ControlLightDirCheckBox.CheckedChanged += new System.EventHandler(this.ControlLightDirCheckBox_CheckedChanged); + // + // ShowCollisionMeshesCheckBox + // + this.ShowCollisionMeshesCheckBox.AutoSize = true; + this.ShowCollisionMeshesCheckBox.Location = new System.Drawing.Point(19, 162); + this.ShowCollisionMeshesCheckBox.Name = "ShowCollisionMeshesCheckBox"; + this.ShowCollisionMeshesCheckBox.Size = new System.Drawing.Size(132, 17); + this.ShowCollisionMeshesCheckBox.TabIndex = 7; + this.ShowCollisionMeshesCheckBox.Text = "Show collision meshes"; + this.ShowCollisionMeshesCheckBox.UseVisualStyleBackColor = true; + this.ShowCollisionMeshesCheckBox.CheckedChanged += new System.EventHandler(this.ShowCollisionMeshesCheckBox_CheckedChanged); + // + // GridCheckBox + // + this.GridCheckBox.AutoSize = true; + this.GridCheckBox.Location = new System.Drawing.Point(19, 345); + this.GridCheckBox.Name = "GridCheckBox"; + this.GridCheckBox.Size = new System.Drawing.Size(45, 17); + this.GridCheckBox.TabIndex = 17; + this.GridCheckBox.Text = "Grid"; + this.GridCheckBox.UseVisualStyleBackColor = true; + this.GridCheckBox.CheckedChanged += new System.EventHandler(this.GridCheckBox_CheckedChanged); + // + // GridCountComboBox + // + this.GridCountComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.GridCountComboBox.FormattingEnabled = true; + this.GridCountComboBox.Items.AddRange(new object[] { + "20", + "40", + "60", + "100"}); + this.GridCountComboBox.Location = new System.Drawing.Point(83, 392); + this.GridCountComboBox.Name = "GridCountComboBox"; + this.GridCountComboBox.Size = new System.Drawing.Size(114, 21); + this.GridCountComboBox.TabIndex = 21; + this.GridCountComboBox.SelectedIndexChanged += new System.EventHandler(this.GridCountComboBox_SelectedIndexChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(7, 395); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(59, 13); + this.label2.TabIndex = 20; + this.label2.Text = "Grid count:"; + // + // GridSizeComboBox + // + this.GridSizeComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.GridSizeComboBox.FormattingEnabled = true; + this.GridSizeComboBox.Items.AddRange(new object[] { + "0.1", + "1.0", + "10", + "100"}); + this.GridSizeComboBox.Location = new System.Drawing.Point(83, 365); + this.GridSizeComboBox.Name = "GridSizeComboBox"; + this.GridSizeComboBox.Size = new System.Drawing.Size(114, 21); + this.GridSizeComboBox.TabIndex = 19; + this.GridSizeComboBox.SelectedIndexChanged += new System.EventHandler(this.GridSizeComboBox_SelectedIndexChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(7, 368); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(70, 13); + this.label1.TabIndex = 18; + this.label1.Text = "Grid unit size:"; + // + // StatusBarCheckBox + // + this.StatusBarCheckBox.AutoSize = true; + this.StatusBarCheckBox.Checked = true; + this.StatusBarCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; + this.StatusBarCheckBox.Location = new System.Drawing.Point(19, 480); + this.StatusBarCheckBox.Name = "StatusBarCheckBox"; + this.StatusBarCheckBox.Size = new System.Drawing.Size(74, 17); + this.StatusBarCheckBox.TabIndex = 23; + this.StatusBarCheckBox.Text = "Status bar"; + this.StatusBarCheckBox.UseVisualStyleBackColor = true; + this.StatusBarCheckBox.CheckedChanged += new System.EventHandler(this.StatusBarCheckBox_CheckedChanged); + // + // ErrorConsoleCheckBox + // + this.ErrorConsoleCheckBox.AutoSize = true; + this.ErrorConsoleCheckBox.Location = new System.Drawing.Point(105, 480); + this.ErrorConsoleCheckBox.Name = "ErrorConsoleCheckBox"; + this.ErrorConsoleCheckBox.Size = new System.Drawing.Size(88, 17); + this.ErrorConsoleCheckBox.TabIndex = 24; + this.ErrorConsoleCheckBox.Text = "Error console"; + this.ErrorConsoleCheckBox.UseVisualStyleBackColor = true; + this.ErrorConsoleCheckBox.CheckedChanged += new System.EventHandler(this.ErrorConsoleCheckBox_CheckedChanged); + // + // HDRRenderingCheckBox + // + this.HDRRenderingCheckBox.AutoSize = true; + this.HDRRenderingCheckBox.Checked = true; + this.HDRRenderingCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; + this.HDRRenderingCheckBox.Location = new System.Drawing.Point(19, 14); + this.HDRRenderingCheckBox.Name = "HDRRenderingCheckBox"; + this.HDRRenderingCheckBox.Size = new System.Drawing.Size(97, 17); + this.HDRRenderingCheckBox.TabIndex = 0; + this.HDRRenderingCheckBox.Text = "HDR rendering"; + this.HDRRenderingCheckBox.UseVisualStyleBackColor = true; + this.HDRRenderingCheckBox.CheckedChanged += new System.EventHandler(this.HDRRenderingCheckBox_CheckedChanged); + // + // SkydomeCheckBox + // + this.SkydomeCheckBox.AutoSize = true; + this.SkydomeCheckBox.Location = new System.Drawing.Point(19, 56); + this.SkydomeCheckBox.Name = "SkydomeCheckBox"; + this.SkydomeCheckBox.Size = new System.Drawing.Size(70, 17); + this.SkydomeCheckBox.TabIndex = 2; + this.SkydomeCheckBox.Text = "Skydome"; + this.SkydomeCheckBox.UseVisualStyleBackColor = true; + this.SkydomeCheckBox.CheckedChanged += new System.EventHandler(this.SkydomeCheckBox_CheckedChanged); + // + // ShadowsCheckBox + // + this.ShadowsCheckBox.AutoSize = true; + this.ShadowsCheckBox.Checked = true; + this.ShadowsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; + this.ShadowsCheckBox.Location = new System.Drawing.Point(19, 35); + this.ShadowsCheckBox.Name = "ShadowsCheckBox"; + this.ShadowsCheckBox.Size = new System.Drawing.Size(70, 17); + this.ShadowsCheckBox.TabIndex = 1; + this.ShadowsCheckBox.Text = "Shadows"; + this.ShadowsCheckBox.UseVisualStyleBackColor = true; + this.ShadowsCheckBox.CheckedChanged += new System.EventHandler(this.ShadowsCheckBox_CheckedChanged); + // + // WireframeCheckBox + // + this.WireframeCheckBox.AutoSize = true; + this.WireframeCheckBox.Location = new System.Drawing.Point(19, 185); + this.WireframeCheckBox.Name = "WireframeCheckBox"; + this.WireframeCheckBox.Size = new System.Drawing.Size(74, 17); + this.WireframeCheckBox.TabIndex = 8; + this.WireframeCheckBox.Text = "Wireframe"; + this.WireframeCheckBox.UseVisualStyleBackColor = true; + this.WireframeCheckBox.CheckedChanged += new System.EventHandler(this.WireframeCheckBox_CheckedChanged); + // + // RenderModeComboBox + // + this.RenderModeComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.RenderModeComboBox.FormattingEnabled = true; + this.RenderModeComboBox.Items.AddRange(new object[] { + "Default", + "Single texture", + "Vertex normals", + "Vertex tangents", + "Vertex colour 1", + "Vertex colour 2", + "Texture coord 1", + "Texture coord 2", + "Texture coord 3"}); + this.RenderModeComboBox.Location = new System.Drawing.Point(83, 255); + this.RenderModeComboBox.Name = "RenderModeComboBox"; + this.RenderModeComboBox.Size = new System.Drawing.Size(114, 21); + this.RenderModeComboBox.TabIndex = 12; + this.RenderModeComboBox.SelectedIndexChanged += new System.EventHandler(this.RenderModeComboBox_SelectedIndexChanged); + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(7, 285); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(67, 13); + this.label11.TabIndex = 13; + this.label11.Text = "Tex sampler:"; + // + // TextureSamplerComboBox + // + this.TextureSamplerComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.TextureSamplerComboBox.Enabled = false; + this.TextureSamplerComboBox.FormattingEnabled = true; + this.TextureSamplerComboBox.Location = new System.Drawing.Point(83, 282); + this.TextureSamplerComboBox.Name = "TextureSamplerComboBox"; + this.TextureSamplerComboBox.Size = new System.Drawing.Size(114, 21); + this.TextureSamplerComboBox.TabIndex = 14; + this.TextureSamplerComboBox.SelectedIndexChanged += new System.EventHandler(this.TextureSamplerComboBox_SelectedIndexChanged); + // + // TextureCoordsComboBox + // + this.TextureCoordsComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.TextureCoordsComboBox.Enabled = false; + this.TextureCoordsComboBox.FormattingEnabled = true; + this.TextureCoordsComboBox.Items.AddRange(new object[] { + "Texture coord 1", + "Texture coord 2", + "Texture coord 3"}); + this.TextureCoordsComboBox.Location = new System.Drawing.Point(83, 309); + this.TextureCoordsComboBox.Name = "TextureCoordsComboBox"; + this.TextureCoordsComboBox.Size = new System.Drawing.Size(114, 21); + this.TextureCoordsComboBox.TabIndex = 16; + this.TextureCoordsComboBox.SelectedIndexChanged += new System.EventHandler(this.TextureCoordsComboBox_SelectedIndexChanged); + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(7, 258); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(74, 13); + this.label10.TabIndex = 11; + this.label10.Text = "Render mode:"; + // + // AnisotropicFilteringCheckBox + // + this.AnisotropicFilteringCheckBox.AutoSize = true; + this.AnisotropicFilteringCheckBox.Checked = true; + this.AnisotropicFilteringCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; + this.AnisotropicFilteringCheckBox.Location = new System.Drawing.Point(19, 208); + this.AnisotropicFilteringCheckBox.Name = "AnisotropicFilteringCheckBox"; + this.AnisotropicFilteringCheckBox.Size = new System.Drawing.Size(114, 17); + this.AnisotropicFilteringCheckBox.TabIndex = 9; + this.AnisotropicFilteringCheckBox.Text = "Anisotropic filtering"; + this.AnisotropicFilteringCheckBox.UseVisualStyleBackColor = true; + this.AnisotropicFilteringCheckBox.CheckedChanged += new System.EventHandler(this.AnisotropicFilteringCheckBox_CheckedChanged); + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(7, 312); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(63, 13); + this.label14.TabIndex = 15; + this.label14.Text = "Tex coords:"; + // + // ToolsPanelHideButton + // + this.ToolsPanelHideButton.Location = new System.Drawing.Point(3, 3); + this.ToolsPanelHideButton.Name = "ToolsPanelHideButton"; + this.ToolsPanelHideButton.Size = new System.Drawing.Size(30, 23); + this.ToolsPanelHideButton.TabIndex = 0; + this.ToolsPanelHideButton.Text = "<<"; + this.ToolsPanelHideButton.UseVisualStyleBackColor = true; + this.ToolsPanelHideButton.Click += new System.EventHandler(this.ToolsPanelHideButton_Click); + // + // ToolsDragPanel + // + this.ToolsDragPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Right))); + this.ToolsDragPanel.Cursor = System.Windows.Forms.Cursors.VSplit; + this.ToolsDragPanel.Location = new System.Drawing.Point(227, 0); + this.ToolsDragPanel.Name = "ToolsDragPanel"; + this.ToolsDragPanel.Size = new System.Drawing.Size(4, 559); + this.ToolsDragPanel.TabIndex = 17; + this.ToolsDragPanel.MouseDown += new System.Windows.Forms.MouseEventHandler(this.ToolsDragPanel_MouseDown); + this.ToolsDragPanel.MouseMove += new System.Windows.Forms.MouseEventHandler(this.ToolsDragPanel_MouseMove); + this.ToolsDragPanel.MouseUp += new System.Windows.Forms.MouseEventHandler(this.ToolsDragPanel_MouseUp); + // + // ToolsPanelShowButton + // + this.ToolsPanelShowButton.Location = new System.Drawing.Point(15, 15); + this.ToolsPanelShowButton.Name = "ToolsPanelShowButton"; + this.ToolsPanelShowButton.Size = new System.Drawing.Size(30, 23); + this.ToolsPanelShowButton.TabIndex = 0; + this.ToolsPanelShowButton.Text = ">>"; + this.ToolsPanelShowButton.UseVisualStyleBackColor = true; + this.ToolsPanelShowButton.Click += new System.EventHandler(this.ToolsPanelShowButton_Click); + // + // SaveFileDialog + // + this.SaveFileDialog.Filter = "All files|*.*"; + // + // FragGlassCheckBox + // + this.FragGlassCheckBox.AutoSize = true; + this.FragGlassCheckBox.Location = new System.Drawing.Point(19, 449); + this.FragGlassCheckBox.Name = "FragGlassCheckBox"; + this.FragGlassCheckBox.Size = new System.Drawing.Size(175, 17); + this.FragGlassCheckBox.TabIndex = 25; + this.FragGlassCheckBox.Text = "Show Fragments Glass Outlines"; + this.FragGlassCheckBox.UseVisualStyleBackColor = true; + this.FragGlassCheckBox.CheckedChanged += new System.EventHandler(this.FragGlassCheckBox_CheckedChanged); + // // ModelForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -872,5 +885,6 @@ private System.Windows.Forms.ComboBox ClipComboBox; private System.Windows.Forms.Label label21; private System.Windows.Forms.ComboBox ClipDictComboBox; + private System.Windows.Forms.CheckBox FragGlassCheckBox; } } \ No newline at end of file diff --git a/CodeWalker/Forms/ModelForm.cs b/CodeWalker/Forms/ModelForm.cs index f5c68cd..e281449 100644 --- a/CodeWalker/Forms/ModelForm.cs +++ b/CodeWalker/Forms/ModelForm.cs @@ -138,6 +138,7 @@ namespace CodeWalker.Forms Renderer.renderclouds = false; Renderer.rendermoon = false; Renderer.renderskeletons = false; + Renderer.renderfragwindows = false; Renderer.SelectionFlagsTestAll = true; //var timeofday = 13.6f; @@ -272,6 +273,7 @@ namespace CodeWalker.Forms Renderer.RenderQueued(); + Renderer.RenderSelectionGeometry(MapSelectionMode.Entity); Renderer.RenderFinalPass(); @@ -1877,6 +1879,11 @@ namespace CodeWalker.Forms Renderer.renderskeletons = SkeletonsCheckBox.Checked; } + private void FragGlassCheckBox_CheckedChanged(object sender, EventArgs e) + { + Renderer.renderfragwindows = FragGlassCheckBox.Checked; + } + private void ErrorConsoleCheckBox_CheckedChanged(object sender, EventArgs e) { ConsolePanel.Visible = ErrorConsoleCheckBox.Checked; diff --git a/CodeWalker/Rendering/Renderer.cs b/CodeWalker/Rendering/Renderer.cs index 140536c..dc35e55 100644 --- a/CodeWalker/Rendering/Renderer.cs +++ b/CodeWalker/Rendering/Renderer.cs @@ -111,6 +111,7 @@ namespace CodeWalker.Rendering public bool renderlodlights = true; //render LOD lights from ymaps public bool renderdistlodlights = true; //render distant lod lights (coronas) public bool rendercars = false; + public bool renderfragwindows = false; //render selection geometry for window glass data in fragments public bool rendercollisionmeshes = Settings.Default.ShowCollisionMeshes; public bool rendercollisionmeshlayerdrawable = true; @@ -921,6 +922,20 @@ namespace CodeWalker.Rendering SelectionLineVerts.Add(new VertexTypePC() { Position = p2, Colour = col }); } + public void RenderSelectionQuad(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, uint col) + { + var v1 = new VertexTypePC() { Position = p1, Colour = col }; + var v2 = new VertexTypePC() { Position = p2, Colour = col }; + var v3 = new VertexTypePC() { Position = p3, Colour = col }; + var v4 = new VertexTypePC() { Position = p4, Colour = col }; + SelectionTriVerts.Add(v1); + SelectionTriVerts.Add(v2); + SelectionTriVerts.Add(v3); + SelectionTriVerts.Add(v3); + SelectionTriVerts.Add(v4); + SelectionTriVerts.Add(v1); + } + public void RenderSelectionCone(Vector3 position, Vector3 ax, Vector3 ay, Vector3 dir, float radius, float height, uint col) { const int Reso = 36; @@ -2887,6 +2902,123 @@ namespace CodeWalker.Rendering } + + if (renderfragwindows) + { + var colblu = (uint)(new Color(0, 0, 255, 255).ToRgba()); + var colred = (uint)(new Color(255, 0, 0, 255).ToRgba()); + var eori = Quaternion.Identity; + var epos = Vector3.Zero; + if (ent != null) + { + eori = ent.Orientation; + epos = ent.Position; + } + + if (f.GlassWindows?.data_items != null) + { + for (int i = 0; i < f.GlassWindows.data_items.Length; i++) + { + var gw = f.GlassWindows.data_items[i]; + var projt = new Vector3(gw.UnkFloat1, gw.UnkFloat2, gw.UnkFloat3);//row0? or row3? maybe investigate more + var proju = new Vector3(gw.UnkFloat5, gw.UnkFloat6, gw.UnkFloat7);//row1 of XYZ>UV projection + var projv = new Vector3(gw.UnkFloat9, gw.UnkFloat10, gw.UnkFloat11);//row2 of XYZ>UV projection + //var unk01 = new Vector2(gw.UnkFloat13, gw.UnkFloat14);//offset? + //var unk02 = new Vector2(gw.UnkFloat15, gw.UnkFloat16);//scale? sum of this and above often gives integers eg 1, 6 + //var thick = gw.UnkFloat17; //thickness of the glass + //var unkuv = new Vector2(gw.UnkFloat18, gw.UnkFloat19); //another scale in UV space..? + //var tangt = new Vector3(gw.UnkFloat20, gw.UnkFloat21, gw.UnkFloat22);//direction of surface tangent + //var bones = f.Drawable?.Skeleton?.Bones?.Items; //todo: use bones instead? + var grp = gw.Group; + var grplod = gw.GroupLOD; + var xforms = grplod?.FragTransforms?.Matrices; + var xoffs = Vector3.Zero; + if ((grp != null) && (xforms != null) && (grp.Index < xforms.Length) && (grplod != null)) + { + var xform = xforms[grp.Index]; + xoffs = xform.TranslationVector + grplod.Unknown_30h; + } + var m = new Matrix(); + m.Row1 = new Vector4(projt, 0); + m.Row2 = new Vector4(proju, 0); + m.Row3 = new Vector4(projv, 0); + m.Row4 = new Vector4(xoffs, 1); + var v0 = m.Multiply(new Vector3(1, 0, 0)); + var v1 = m.Multiply(new Vector3(1, 0, 1)); + var v2 = m.Multiply(new Vector3(1, 1, 1)); + var v3 = m.Multiply(new Vector3(1, 1, 0)); + var c0 = eori.Multiply(v0) + epos; + var c1 = eori.Multiply(v1) + epos; + var c2 = eori.Multiply(v2) + epos; + var c3 = eori.Multiply(v3) + epos; + RenderSelectionLine(c0, c1, colblu); + RenderSelectionLine(c1, c2, colblu); + RenderSelectionLine(c2, c3, colblu); + RenderSelectionLine(c3, c0, colblu); + //RenderSelectionLine(c0, c0 + tangt, colred); + } + } + if (f.VehicleGlassWindows?.Windows != null) + { + for (int i = 0; i < f.VehicleGlassWindows.Windows.Length; i++) + { + var vgw = f.VehicleGlassWindows.Windows[i]; + var projt = new Vector3(vgw.UnkFloat1, vgw.UnkFloat2, vgw.UnkFloat3);//row1 + var proju = new Vector3(vgw.UnkFloat5, vgw.UnkFloat6, vgw.UnkFloat7);//row2 + var projv = new Vector3(vgw.UnkFloat9, vgw.UnkFloat10, vgw.UnkFloat11);//row3 + var projw = new Vector3(vgw.UnkFloat13, vgw.UnkFloat14, vgw.UnkFloat15);//row4 + //var grp = vgw.Group; + //var grplod = vgw.GroupLOD; + var m = new Matrix(); + m.Row1 = new Vector4(projt, 0); + m.Row2 = new Vector4(proju, 0); + m.Row3 = new Vector4(projv, 0); + m.Row4 = new Vector4(projw, 1); + m.Invert();//ouch + var min = (new Vector3(0, 0, 0)); + var max = (new Vector3(vgw.ShatterMapWidth, vgw.ItemDataCount, 1)); + var v0 = m.MultiplyW(new Vector3(min.X, min.Y, 0)); + var v1 = m.MultiplyW(new Vector3(min.X, max.Y, 0)); + var v2 = m.MultiplyW(new Vector3(max.X, max.Y, 0)); + var v3 = m.MultiplyW(new Vector3(max.X, min.Y, 0)); + var c0 = eori.Multiply(v0) + epos; + var c1 = eori.Multiply(v1) + epos; + var c2 = eori.Multiply(v2) + epos; + var c3 = eori.Multiply(v3) + epos; + RenderSelectionLine(c0, c1, colblu); + RenderSelectionLine(c1, c2, colblu); + RenderSelectionLine(c2, c3, colblu); + RenderSelectionLine(c3, c0, colblu); + if (vgw.ShatterMap != null) + { + var width = vgw.ShatterMapWidth; + var height = vgw.ShatterMap.Length; + for (int y = 0; y < height; y++) + { + var smr = vgw.ShatterMap[y]; + for (int x = 0; x < width; x++) + { + var v = smr.GetValue(x); + if ((v < 0) || (v > 255)) continue; + var col = (uint)(new Color(v, v, v, 127).ToRgba()); + v0 = m.MultiplyW(new Vector3(x, y, 0)); + v1 = m.MultiplyW(new Vector3(x, y+1, 0)); + v2 = m.MultiplyW(new Vector3(x+1, y+1, 0)); + v3 = m.MultiplyW(new Vector3(x+1, y, 0)); + c0 = eori.Multiply(v0) + epos; + c1 = eori.Multiply(v1) + epos; + c2 = eori.Multiply(v2) + epos; + c3 = eori.Multiply(v3) + epos; + RenderSelectionQuad(c0, c1, c2, c3, col);//extra ouch + } + } + } + + } + } + } + + return true; } diff --git a/CodeWalker/VehicleForm.Designer.cs b/CodeWalker/VehicleForm.Designer.cs index 8b6a598..a927ccd 100644 --- a/CodeWalker/VehicleForm.Designer.cs +++ b/CodeWalker/VehicleForm.Designer.cs @@ -90,6 +90,7 @@ this.ToolsPanelShowButton = new System.Windows.Forms.Button(); this.ConsolePanel = new System.Windows.Forms.Panel(); this.ConsoleTextBox = new CodeWalker.WinForms.TextBoxFix(); + this.ShatterMapsCheckBox = new System.Windows.Forms.CheckBox(); this.StatusStrip.SuspendLayout(); this.ToolsPanel.SuspendLayout(); this.ToolsTabControl.SuspendLayout(); @@ -419,6 +420,7 @@ // // ToolsOptionsTabPage // + this.ToolsOptionsTabPage.Controls.Add(this.ShatterMapsCheckBox); this.ToolsOptionsTabPage.Controls.Add(this.HDTexturesCheckBox); this.ToolsOptionsTabPage.Controls.Add(this.SkeletonsCheckBox); this.ToolsOptionsTabPage.Controls.Add(this.TimeOfDayLabel); @@ -594,7 +596,7 @@ this.StatusBarCheckBox.AutoSize = true; this.StatusBarCheckBox.Checked = true; this.StatusBarCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; - this.StatusBarCheckBox.Location = new System.Drawing.Point(19, 480); + this.StatusBarCheckBox.Location = new System.Drawing.Point(19, 519); this.StatusBarCheckBox.Name = "StatusBarCheckBox"; this.StatusBarCheckBox.Size = new System.Drawing.Size(74, 17); this.StatusBarCheckBox.TabIndex = 23; @@ -605,7 +607,7 @@ // ErrorConsoleCheckBox // this.ErrorConsoleCheckBox.AutoSize = true; - this.ErrorConsoleCheckBox.Location = new System.Drawing.Point(105, 480); + this.ErrorConsoleCheckBox.Location = new System.Drawing.Point(105, 519); this.ErrorConsoleCheckBox.Name = "ErrorConsoleCheckBox"; this.ErrorConsoleCheckBox.Size = new System.Drawing.Size(88, 17); this.ErrorConsoleCheckBox.TabIndex = 24; @@ -804,6 +806,17 @@ this.ConsoleTextBox.Size = new System.Drawing.Size(695, 95); this.ConsoleTextBox.TabIndex = 0; // + // ShatterMapsCheckBox + // + this.ShatterMapsCheckBox.AutoSize = true; + this.ShatterMapsCheckBox.Location = new System.Drawing.Point(19, 467); + this.ShatterMapsCheckBox.Name = "ShatterMapsCheckBox"; + this.ShatterMapsCheckBox.Size = new System.Drawing.Size(161, 17); + this.ShatterMapsCheckBox.TabIndex = 25; + this.ShatterMapsCheckBox.Text = "Show Window Shatter Maps"; + this.ShatterMapsCheckBox.UseVisualStyleBackColor = true; + this.ShatterMapsCheckBox.CheckedChanged += new System.EventHandler(this.ShatterMapsCheckBox_CheckedChanged); + // // VehicleForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -908,5 +921,6 @@ private System.Windows.Forms.Button ConvRoofButton; private System.Windows.Forms.Label ConvRoofNameLabel; private System.Windows.Forms.Label label8; + private System.Windows.Forms.CheckBox ShatterMapsCheckBox; } } \ No newline at end of file diff --git a/CodeWalker/VehicleForm.cs b/CodeWalker/VehicleForm.cs index 67f74ea..802d556 100644 --- a/CodeWalker/VehicleForm.cs +++ b/CodeWalker/VehicleForm.cs @@ -101,6 +101,7 @@ namespace CodeWalker //Renderer.individualcloudfrag = "Contrails"; Renderer.rendermoon = false; Renderer.renderskeletons = false; + Renderer.renderfragwindows = false; Renderer.SelectionFlagsTestAll = true; } @@ -202,7 +203,7 @@ namespace CodeWalker //Renderer.RenderBounds(MapSelectionMode.Entity); - //Renderer.RenderSelectionGeometry(MapSelectionMode.Entity); + Renderer.RenderSelectionGeometry(MapSelectionMode.Entity); //RenderMoused(); @@ -1351,6 +1352,11 @@ namespace CodeWalker Renderer.renderskeletons = SkeletonsCheckBox.Checked; } + private void ShatterMapsCheckBox_CheckedChanged(object sender, EventArgs e) + { + Renderer.renderfragwindows = ShatterMapsCheckBox.Checked; + } + private void ErrorConsoleCheckBox_CheckedChanged(object sender, EventArgs e) { ConsolePanel.Visible = ErrorConsoleCheckBox.Checked;