Skip to content

Commit

Permalink
Merge pull request #831 from osdanova/master
Browse files Browse the repository at this point in the history
MdlxEditor bones edition
  • Loading branch information
kenjiuno authored Jul 29, 2023
2 parents e80e15e + 4933885 commit dedab1b
Show file tree
Hide file tree
Showing 7 changed files with 89 additions and 1 deletion.
9 changes: 9 additions & 0 deletions OpenKh.Kh2/Models/ModelSkeletal.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System.Collections.Generic;
using System.IO;
using System.Numerics;
using System.Reflection;
using Xe.BinaryMapper;
using static OpenKh.Kh2.Models.ModelCommon;

Expand Down Expand Up @@ -273,6 +274,14 @@ public static SkeletalMesh getMeshFromGroup(SkeletalGroup group, Matrix4x4[] bon
return GetSkeletalMeshFromVpuGroup(vpuGroup, boneMatrices);
}

public void recalculateMeshes()
{
foreach (SkeletalGroup group in Groups)
{
group.Mesh = getMeshFromGroup(group, GetBoneMatrices(Bones));
}
}

//----------------------------
// INTERNAL FUNCTIONS
// Kept public for ease of use
Expand Down
14 changes: 14 additions & 0 deletions OpenKh.Tools.Kh2MdlxEditor/ViewModels/ModelBones_VM.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using OpenKh.Kh2.Models;

namespace OpenKh.Tools.Kh2MdlxEditor.ViewModels
{
public class ModelBones_VM
{
public ModelSkeletal ModelFile { get; set; }
public ModelBones_VM() { }
public ModelBones_VM(ModelSkeletal modelFile)
{
ModelFile = modelFile;
}
}
}
2 changes: 1 addition & 1 deletion OpenKh.Tools.Kh2MdlxEditor/Views/Main2_Window.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
<!-- Side menu -->
<StackPanel Grid.Column="1" Background="#2d2d2d">
<!-- Model -->
<Image x:Name="sideModel" Visibility="Collapsed" Height="50" Source="../Assets/IconModelW.png" MouseLeftButtonUp="Side_Model"></Image>
<Image x:Name="sideModel" Visibility="Collapsed" Height="50" Source="../Assets/IconModelW.png" MouseLeftButtonUp="Side_Model" MouseRightButtonUp="Side_ModelBones"></Image>
<!-- Texture -->
<Image x:Name="sideTexture" Visibility="Collapsed" Height="50" Source="../Assets/IconTextureW.png" MouseLeftButtonUp="Side_Texture"></Image>
<!-- Collision -->
Expand Down
4 changes: 4 additions & 0 deletions OpenKh.Tools.Kh2MdlxEditor/Views/Main2_Window.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,10 @@ private void Side_Model(object sender, EventArgs e)
{
reloadModelControl();
}
private void Side_ModelBones(object sender, EventArgs e)
{
contentFrame.Content = new ModelBones_Control(mainVM.ModelFile);
}
private void Side_Texture(object sender, EventArgs e)
{
contentFrame.Content = new TextureFile_Control(mainVM.TextureFile);
Expand Down
35 changes: 35 additions & 0 deletions OpenKh.Tools.Kh2MdlxEditor/Views/ModelBones_Control.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<UserControl x:Class="OpenKh.Tools.Kh2MdlxEditor.Views.ModelBones_Control"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:OpenKh.Tools.Kh2MdlxEditor.Views"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">

<DataGrid Name="DataTable"
AutoGenerateColumns="False"
ItemsSource="{Binding ModelFile.Bones}"
CanUserAddRows="True">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Index}" Header="Index" />
<DataGridTextColumn Binding="{Binding Path=SiblingIndex}" Header="SiblingIndex" />
<DataGridTextColumn Binding="{Binding Path=ParentIndex}" Header="ParentIndex" />
<DataGridTextColumn Binding="{Binding Path=ChildIndex}" Header="ChildIndex" />
<DataGridTextColumn Binding="{Binding Path=ScaleX}" Header="ScaleX" />
<DataGridTextColumn Binding="{Binding Path=ScaleY}" Header="ScaleY" />
<DataGridTextColumn Binding="{Binding Path=ScaleZ}" Header="ScaleZ" />
<DataGridTextColumn Binding="{Binding Path=ScaleW}" Header="ScaleW" />
<DataGridTextColumn Binding="{Binding Path=RotationX}" Header="RotationX" />
<DataGridTextColumn Binding="{Binding Path=RotationY}" Header="RotationY" />
<DataGridTextColumn Binding="{Binding Path=RotationZ}" Header="RotationZ" />
<DataGridTextColumn Binding="{Binding Path=RotationW}" Header="RotationW" />
<DataGridTextColumn Binding="{Binding Path=TranslationX}" Header="TranslationX" />
<DataGridTextColumn Binding="{Binding Path=TranslationY}" Header="TranslationY" />
<DataGridTextColumn Binding="{Binding Path=TranslationZ}" Header="TranslationZ" />
<DataGridTextColumn Binding="{Binding Path=TranslationW}" Header="TranslationW" />
<DataGridTextColumn Binding="{Binding Path=Flags}" Header="Flags" />
</DataGrid.Columns>
</DataGrid>

</UserControl>
22 changes: 22 additions & 0 deletions OpenKh.Tools.Kh2MdlxEditor/Views/ModelBones_Control.xaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using OpenKh.Kh2.Models;
using OpenKh.Tools.Kh2MdlxEditor.ViewModels;
using System.Windows.Controls;

namespace OpenKh.Tools.Kh2MdlxEditor.Views
{
public partial class ModelBones_Control : UserControl
{
ModelBones_VM ThisVM { get; set; }

public ModelBones_Control()
{
InitializeComponent();
}
public ModelBones_Control(ModelSkeletal modelFile)
{
InitializeComponent();
ThisVM = new ModelBones_VM(modelFile);
DataContext = ThisVM;
}
}
}
4 changes: 4 additions & 0 deletions OpenKh.Tools.Kh2MdlxEditor/Views/Model_Control.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ public Model_Control()
public Model_Control(ModelSkeletal modelFile, ModelTexture textureFile, ModelCollision? collisionFile = null)
{
InitializeComponent();

// Recalc meshes
modelFile.recalculateMeshes();

modelControlModel = new Model_VM(modelFile, textureFile, collisionFile);
DataContext = modelControlModel;
List<GeometryModel3D> geometry = new List<GeometryModel3D>();
Expand Down

0 comments on commit dedab1b

Please sign in to comment.