95 lines
2.2 KiB
C#
95 lines
2.2 KiB
C#
using System;
|
|
using Rukhanka.Toolbox;
|
|
using Unity.Collections.LowLevel.Unsafe;
|
|
using Unity.Entities;
|
|
using FixedStringName = Unity.Collections.FixedString512Bytes;
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
namespace Rukhanka.Hybrid
|
|
{
|
|
// RTP - Ready to process
|
|
namespace RTP
|
|
{
|
|
public struct AnimationClip: IDisposable
|
|
{
|
|
public FixedStringName name;
|
|
public UnsafeList<BoneClip> bones;
|
|
public UnsafeList<BoneClip> curves;
|
|
public UnsafeList<AnimationEvent> events;
|
|
public bool looped;
|
|
public bool loopPoseBlend;
|
|
public float cycleOffset;
|
|
public float length;
|
|
public float additiveReferencePoseTime;
|
|
public bool hasRootMotionCurves;
|
|
public Hash128 hash;
|
|
|
|
public void Dispose()
|
|
{
|
|
foreach (var a in bones) a.Dispose();
|
|
foreach (var a in curves) a.Dispose();
|
|
|
|
bones.Dispose();
|
|
curves.Dispose();
|
|
events.Dispose();
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
public struct BoneClip: IEquatable<Hash128>, IDisposable
|
|
{
|
|
public FixedStringName name;
|
|
public Hash128 nameHash;
|
|
public bool isHumanMuscleClip;
|
|
public UnsafeList<AnimationCurve> animationCurves;
|
|
|
|
public bool Equals(Hash128 o) => o == nameHash;
|
|
|
|
public void SetName(string n)
|
|
{
|
|
name = n;
|
|
nameHash = name.CalculateHash128();
|
|
}
|
|
|
|
public void DisposeCurves()
|
|
{
|
|
foreach (var a in animationCurves) a.Dispose();
|
|
animationCurves.Clear();
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
DisposeCurves();
|
|
animationCurves.Dispose();
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
public struct AnimationCurve: IDisposable
|
|
{
|
|
public BindingType bindingType;
|
|
public short channelIndex; // 0, 1, 2, 3 -> x, y, z, w
|
|
public UnsafeList<KeyFrame> keyFrames;
|
|
|
|
public void Dispose() => keyFrames.Dispose();
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
public struct AnimationEvent
|
|
{
|
|
public FixedStringName name;
|
|
public float time;
|
|
public float floatParam;
|
|
public int intParam;
|
|
public FixedStringName stringParam;
|
|
}
|
|
|
|
} // RTP
|
|
}
|
|
|
|
|