mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-03-30 14:25:13 -05:00
44 lines
1.5 KiB
C#
44 lines
1.5 KiB
C#
using System;
|
|
using Unity.Jobs;
|
|
using UnityEngine.Jobs;
|
|
|
|
namespace UniVRM10.FastSpringBones.System
|
|
{
|
|
public sealed class FastSpringBoneScheduler : IDisposable
|
|
{
|
|
private readonly FastSpringBoneBufferCombiner _fastSpringBoneBufferCombiner;
|
|
|
|
public FastSpringBoneScheduler(FastSpringBoneBufferCombiner fastSpringBoneBufferCombiner)
|
|
{
|
|
_fastSpringBoneBufferCombiner = fastSpringBoneBufferCombiner;
|
|
}
|
|
|
|
public JobHandle Schedule()
|
|
{
|
|
var handle = new PullTransformJob
|
|
{
|
|
Transforms = _fastSpringBoneBufferCombiner.Transforms
|
|
}.Schedule(_fastSpringBoneBufferCombiner.TransformAccessArray);
|
|
|
|
handle = new UpdateFastSpringBoneJob
|
|
{
|
|
Colliders = _fastSpringBoneBufferCombiner.Colliders,
|
|
Joints = _fastSpringBoneBufferCombiner.Joints,
|
|
Springs = _fastSpringBoneBufferCombiner.Springs,
|
|
Transforms = _fastSpringBoneBufferCombiner.Transforms,
|
|
}.Schedule(_fastSpringBoneBufferCombiner.Springs.Length, 1, handle);
|
|
|
|
handle = new PushTransformJob
|
|
{
|
|
Transforms = _fastSpringBoneBufferCombiner.Transforms
|
|
}.Schedule(_fastSpringBoneBufferCombiner.TransformAccessArray, handle);
|
|
|
|
return handle;
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
_fastSpringBoneBufferCombiner.Dispose();
|
|
}
|
|
}
|
|
} |