ArrayRange

This commit is contained in:
ousttrue 2024-11-29 22:23:54 +09:00
parent c871f04a1e
commit c2cab1c68c
4 changed files with 19 additions and 8 deletions

View File

@ -61,7 +61,7 @@ namespace UniVRM10.ClothWarp
return Color.gray;
}
public async Task InitializeAsync(Vrm10Instance vrm, IAwaitCaller awaitCaller)
public Task InitializeAsync(Vrm10Instance vrm, IAwaitCaller awaitCaller)
{
_building = true;
_vrm = vrm;
@ -115,6 +115,8 @@ namespace UniVRM10.ClothWarp
_initialized = true;
_building = false;
return Task.CompletedTask;
}
/// <summary>

View File

@ -196,8 +196,11 @@ namespace UniVRM10.ClothWarp.Jobs
warps.Add(new WarpInfo
{
StartIndex = start,
EndIndex = _transforms.Count,
PrticleRange = new ArrayRange
{
Start = start,
End = _transforms.Count,
},
});
await awaitCaller.NextFrame();
@ -376,7 +379,7 @@ namespace UniVRM10.ClothWarp.Jobs
{
foreach (var warp in _warps)
{
for (int i = warp.StartIndex; i < warp.EndIndex; ++i)
for (int i = warp.PrticleRange.Start; i < warp.PrticleRange.End; ++i)
{
var p = _info[i];
var t = _transforms[i];

View File

@ -16,7 +16,7 @@ namespace UniVRM10.ClothWarp.Jobs
public void Execute(int warpIndex)
{
var warp = Warps[warpIndex];
for (int particleIndex = warp.StartIndex; particleIndex < warp.EndIndex - 1; ++particleIndex)
for (int particleIndex = warp.PrticleRange.Start; particleIndex < warp.PrticleRange.End - 1; ++particleIndex)
{
// 位置を長さで拘束
NextPositions[particleIndex + 1] = NextPositions[particleIndex] +
@ -60,7 +60,7 @@ namespace UniVRM10.ClothWarp.Jobs
public void Execute(int warpIndex)
{
var warp = Warps[warpIndex];
for (int particleIndex = warp.StartIndex; particleIndex < warp.EndIndex - 1; ++particleIndex)
for (int particleIndex = warp.PrticleRange.Start; particleIndex < warp.PrticleRange.End - 1; ++particleIndex)
{
//回転を適用
var p = Info[particleIndex];

View File

@ -1,8 +1,14 @@
namespace UniVRM10.ClothWarp.Jobs
{
public struct ArrayRange
{
public int Start;
public int End;
}
public struct WarpInfo
{
public int StartIndex;
public int EndIndex;
public ArrayRange PrticleRange;
public ArrayRange ColliderGroupRange;
}
}