Improved XML comments for clarity and consistency in Model.cs and Mesh.cs, updated method and variable names for better readability, and adjusted logic in span creation methods.
This commit is contained in:
parent
4263ddf570
commit
d45ea89a4b
2 changed files with 50 additions and 14 deletions
|
|
@ -20,6 +20,9 @@ public unsafe struct BoneInfo
|
|||
/// </summary>
|
||||
public int Parent;
|
||||
|
||||
/// <summary>
|
||||
/// Bone name as string
|
||||
/// </summary>
|
||||
public string NameToString()
|
||||
{
|
||||
fixed (sbyte* name = Name)
|
||||
|
|
@ -48,16 +51,20 @@ public unsafe struct ModelSkeleton
|
|||
/// <summary>
|
||||
/// Bones base transformation (Transform[])
|
||||
/// </summary>
|
||||
public Transform* ModelAnimPose;
|
||||
public Transform* BindPose;
|
||||
|
||||
public Span<Transform> ModelAnimPoseAsSpan()
|
||||
public Span<Transform> BindPoseAsSpan()
|
||||
{
|
||||
return new Span<Transform>(ModelAnimPose, BoneCount);
|
||||
if (BindPose == null || BoneCount <= 0)
|
||||
{
|
||||
return Span<Transform>.Empty;
|
||||
}
|
||||
|
||||
return new Span<Transform>(BindPose, BoneCount);
|
||||
}
|
||||
|
||||
public Span<BoneInfo> BonesAsSpan()
|
||||
{
|
||||
|
||||
if (Bones == null || BoneCount <= 0)
|
||||
{
|
||||
return Span<BoneInfo>.Empty;
|
||||
|
|
@ -69,7 +76,7 @@ public unsafe struct ModelSkeleton
|
|||
|
||||
// Note:
|
||||
// Anim pose, an array of Transform[]
|
||||
// typedef Transform *ModelAnimPose; It's just an pointer array.
|
||||
// typedef Transform *ModelAnimPose; It's just a pointer array.
|
||||
|
||||
/// <summary>
|
||||
/// Model type
|
||||
|
|
@ -122,26 +129,48 @@ public unsafe struct Model
|
|||
/// </summary>
|
||||
public Matrix4x4* BoneMatrices;
|
||||
|
||||
/// <summary>
|
||||
/// Bones animated transformation matrices as span. Based on Skeleton.BoneCount length
|
||||
/// </summary>
|
||||
public Span<Matrix4x4> BoneMatricesAsSpan()
|
||||
{
|
||||
if (BoneMatrices == null || Skeleton.BoneCount <= 0)
|
||||
{
|
||||
return Span<Matrix4x4>.Empty;
|
||||
}
|
||||
|
||||
return new Span<Matrix4x4>(BoneMatrices, Skeleton.BoneCount);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Current animation pose as span. Based on Skeleton.BoneCount length
|
||||
/// </summary>
|
||||
public Span<Transform> CurrentPoseAsSpan()
|
||||
{
|
||||
if (CurrentPose == null || Skeleton.BoneCount <= 0)
|
||||
{
|
||||
return Span<Transform>.Empty;
|
||||
}
|
||||
|
||||
return new Span<Transform>(CurrentPose, Skeleton.BoneCount);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Mesh material number as span. Based on MaterialCount length
|
||||
/// </summary>
|
||||
public Span<int> MeshMaterialAsSpan()
|
||||
{
|
||||
if (MeshMaterial == null || MeshCount <= 0)
|
||||
if (MeshMaterial == null || MaterialCount <= 0)
|
||||
{
|
||||
return Span<int>.Empty;
|
||||
}
|
||||
|
||||
return new Span<int>(MeshMaterial, MeshCount);
|
||||
return new Span<int>(MeshMaterial, MaterialCount);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Meshes as span. based on MeshCount length
|
||||
/// </summary>
|
||||
public Span<Mesh> MeshesAsSpan()
|
||||
{
|
||||
if (Meshes == null || MeshCount <= 0)
|
||||
|
|
@ -170,7 +199,7 @@ public unsafe struct ModelAnimation
|
|||
public readonly int BoneCount;
|
||||
|
||||
/// <summary>
|
||||
/// Number of animation frames
|
||||
/// Number of animation key frames
|
||||
/// </summary>
|
||||
public readonly int KeyFrameCount;
|
||||
|
||||
|
|
@ -179,6 +208,10 @@ public unsafe struct ModelAnimation
|
|||
/// </summary>
|
||||
public Transform** KeyframePoses;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Animation sequence keyframe poses as span. Based on KeyFrameCount length
|
||||
/// </summary>
|
||||
public Span<Transform> GetKeyFramePoseAsSpan(int frame)
|
||||
{
|
||||
if (KeyframePoses == null || frame < 0 || frame >= KeyFrameCount)
|
||||
|
|
@ -196,6 +229,9 @@ public unsafe struct ModelAnimation
|
|||
return new Span<Transform>(KeyframePoses[frame], KeyFrameCount);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Animation name as string
|
||||
/// </summary>
|
||||
public string NameToString()
|
||||
{
|
||||
fixed (sbyte* name = Name)
|
||||
|
|
|
|||
Loading…
Reference in a new issue