1
0
mirror of synced 2024-11-29 09:44:32 +01:00

More adjustments ot prevent crash issues

This commit is contained in:
KillzXGaming 2019-05-11 12:09:06 -04:00
parent 8768f23c4e
commit c648a78de9
6 changed files with 42 additions and 19 deletions

Binary file not shown.

View File

@ -862,6 +862,25 @@ namespace Bfres.Structs
}
}
//Genericate indices
//Check for rigged bones
for (int ob = 0; ob < assimp.objects.Count; ob++)
{
foreach (string NewBone in assimp.objects[ob].boneList)
{
foreach (var bones in Skeleton.bones)
{
if (bones.Text == NewBone)
{
bones.SmoothMatrixIndex += 1;
}
}
}
}
Skeleton.CalculateIndices();
if (materials.Count <= 0)
{
//Force material creation if there is none present

View File

@ -49,41 +49,45 @@ namespace Bfres.Structs
List<ushort> RigidIndices = new List<ushort>();
ushort SmoothIndex = 0;
ushort BoneIndex = 0;
foreach (BfresBone bn in bones)
{
if (Skeleton.Bones.ContainsKey(bn.Text))
ushort BoneIndex = 0;
foreach (var Bone in Skeleton.Bones.Values)
{
var Bone = Skeleton.Bones[bn.Text];
if (bn.UseSmoothMatrix || bn.SmoothMatrixIndex != -1)
if (bn.Text == Bone.Name)
{
bn.SmoothMatrixIndex = (short)SmoothIndex++;
Bone.SmoothMatrixIndex = bn.SmoothMatrixIndex;
SmoothIndices.Add(BoneIndex);
if (bn.UseSmoothMatrix || bn.SmoothMatrixIndex != -1)
{
bn.SmoothMatrixIndex = (short)SmoothIndex++;
Bone.SmoothMatrixIndex = bn.SmoothMatrixIndex;
SmoothIndices.Add(BoneIndex);
var mat = MatrixExenstion.GetMatrixInverted(bn);
SmoothMatrices.Add(mat);
var mat = MatrixExenstion.GetMatrixInverted(bn);
SmoothMatrices.Add(mat);
}
}
BoneIndex++;
}
}
BoneIndex = 0;
//Rigid Indices come after smooth indices. Start from the last smooth index
ushort RigidIndex = (ushort)(SmoothIndices.Count);
foreach (BfresBone bn in bones)
{
var Bone = Skeleton.Bones[bn.Text];
if (bn.UseRigidMatrix || bn.RigidMatrixIndex != -1)
ushort BoneIndex = 0;
foreach (var Bone in Skeleton.Bones.Values)
{
bn.RigidMatrixIndex = (short)RigidIndex++;
Bone.RigidMatrixIndex = bn.RigidMatrixIndex;
RigidIndices.Add(BoneIndex);
if (bn.Text == Bone.Name)
{
if (bn.UseRigidMatrix || bn.RigidMatrixIndex != -1)
{
bn.RigidMatrixIndex = (short)RigidIndex++;
Bone.RigidMatrixIndex = bn.RigidMatrixIndex;
RigidIndices.Add(BoneIndex);
}
}
BoneIndex++;
}
BoneIndex++;
}
//Rigid indices at the end