ClientServer/Client/Assets/Scripts/UI/ScaleMoveToTweenJob.cs
TG9six 03a642d635 first push
first push
2025-09-06 17:17:39 +04:00

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);
}
}
}