35 lines
1.2 KiB
C#
35 lines
1.2 KiB
C#
using Unity.Burst;
|
|
using Unity.Jobs;
|
|
using Unity.Mathematics;
|
|
using Unity.Collections;
|
|
using Unity.Collections.LowLevel.Unsafe;
|
|
|
|
[BurstCompile]
|
|
public struct ScaleMoveToTweenJob : IJob
|
|
{
|
|
[NativeDisableContainerSafetyRestriction]
|
|
public NativeArray<float3> BaseScale;
|
|
|
|
[ReadOnly] public float Speed;
|
|
[ReadOnly] public float DeltaTime;
|
|
[ReadOnly] public float3 TargetScale;
|
|
public void Execute()
|
|
{
|
|
var maxDistanceDelta = Speed * DeltaTime;
|
|
|
|
var num1 = TargetScale.x - BaseScale[0].x;
|
|
var num2 = TargetScale.y - BaseScale[0].y;
|
|
var num3 = TargetScale.z - BaseScale[0].z;
|
|
var num4 = (float)((double)num1 * (double)num1 + (double)num2 * (double)num2 + (double)num3 * (double)num3);
|
|
|
|
if ((double)num4 == 0.0 || (double)num4 <= (double)maxDistanceDelta * (double)maxDistanceDelta)
|
|
{
|
|
BaseScale[0] = TargetScale;
|
|
}
|
|
else
|
|
{
|
|
var num5 = (float)math.sqrt((double)num4);
|
|
BaseScale[0] = new float3(BaseScale[0].x + num1 / num5 * maxDistanceDelta, BaseScale[0].y + num2 / num5 * maxDistanceDelta, BaseScale[0].z + num3 / num5 * maxDistanceDelta);
|
|
}
|
|
}
|
|
} |