Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MdlxEditor bones edition #831

Merged
merged 3 commits into from
Jul 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading