diff options
| author | chai <215380520@qq.com> | 2024-05-19 17:03:57 +0800 |
|---|---|---|
| committer | chai <215380520@qq.com> | 2024-05-19 17:03:57 +0800 |
| commit | cf58771365b5953c6eac548b172aae880d1f0acd (patch) | |
| tree | a49757a4b5c447cbf877584d482367a6bfe33b10 /Thronefall_1_57/Decompile/NGS.MeshFusionPro/JobsMeshMoverSTD.cs | |
| parent | eed315deae356ddfb17f28305e7cde6cdfc43313 (diff) | |
* rename
Diffstat (limited to 'Thronefall_1_57/Decompile/NGS.MeshFusionPro/JobsMeshMoverSTD.cs')
| -rw-r--r-- | Thronefall_1_57/Decompile/NGS.MeshFusionPro/JobsMeshMoverSTD.cs | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/Thronefall_1_57/Decompile/NGS.MeshFusionPro/JobsMeshMoverSTD.cs b/Thronefall_1_57/Decompile/NGS.MeshFusionPro/JobsMeshMoverSTD.cs deleted file mode 100644 index 535b8af..0000000 --- a/Thronefall_1_57/Decompile/NGS.MeshFusionPro/JobsMeshMoverSTD.cs +++ /dev/null @@ -1,144 +0,0 @@ -using System; -using System.Collections.Generic; -using Unity.Burst; -using Unity.Collections; -using Unity.Jobs; -using UnityEngine; - -namespace NGS.MeshFusionPro; - -public class JobsMeshMoverSTD : IAsyncCombinedMeshMover, ICombinedMeshMover, IDisposable -{ - [BurstCompile] - private struct MovePartsJob : IJobParallelFor - { - [NativeDisableParallelForRestriction] - public NativeArray<Vector3> vertices; - - [NativeDisableParallelForRestriction] - public NativeArray<Vector3> normals; - - [NativeDisableParallelForRestriction] - public NativeArray<Vector4> tangents; - - [WriteOnly] - [NativeDisableParallelForRestriction] - public NativeArray<Bounds> bounds; - - [ReadOnly] - [NativeDisableParallelForRestriction] - public NativeArray<Bounds> localBounds; - - [ReadOnly] - public NativeList<PartMoveInfo> moveInfos; - - public void Execute(int idx) - { - PartMoveInfo partMoveInfo = moveInfos[idx]; - int partIndex = partMoveInfo.partIndex; - int vertexStart = partMoveInfo.vertexStart; - int num = vertexStart + partMoveInfo.vertexCount; - Matrix4x4 targetTransform = partMoveInfo.targetTransform; - Matrix4x4 inverse = partMoveInfo.currentTransform.inverse; - for (int i = vertexStart; i < num; i++) - { - Vector3 point = vertices[i]; - Vector3 vector = normals[i]; - Vector4 vector2 = tangents[i]; - float w = vector2.w; - point = inverse.MultiplyPoint3x4(point); - point = targetTransform.MultiplyPoint3x4(point); - vector = inverse.MultiplyVector(vector); - vector = targetTransform.MultiplyVector(vector); - vector2 = inverse.MultiplyVector(vector2); - vector2 = targetTransform.MultiplyVector(vector2); - vector2.w = w; - vertices[i] = point; - normals[i] = vector; - tangents[i] = vector2; - } - bounds[partIndex] = localBounds[partIndex].Transform(targetTransform); - } - } - - [BurstCompile] - private struct RecalculateBoundsJob : IJob - { - public NativeArray<Bounds> bounds; - - public NativeArray<Bounds> boundingBox; - - public void Execute() - { - Bounds value = boundingBox[0]; - for (int i = 0; i < bounds.Length; i++) - { - value.Encapsulate(bounds[i]); - } - boundingBox[0] = value; - } - } - - private MeshDataNativeArraysSTD _meshData; - - private NativeList<PartMoveInfo> _moveInfos; - - private JobHandle _handle; - - public JobsMeshMoverSTD(MeshDataNativeArraysSTD meshData) - { - _meshData = meshData; - _moveInfos = new NativeList<PartMoveInfo>(Allocator.Persistent); - } - - public void MoveParts(IList<PartMoveInfo> moveInfos) - { - MovePartsAsync(moveInfos); - FinishAsyncMoving(); - } - - public void MovePartsAsync(IList<PartMoveInfo> moveInfos) - { - NativeArray<Bounds> bounds = _meshData.Bounds; - bounds[0] = new Bounds(_meshData.GetBounds().center, Vector3.zero); - _moveInfos.Clear(); - for (int i = 0; i < moveInfos.Count; i++) - { - ref NativeList<PartMoveInfo> moveInfos2 = ref _moveInfos; - PartMoveInfo value = moveInfos[i]; - moveInfos2.Add(in value); - } - MovePartsJob movePartsJob = default(MovePartsJob); - movePartsJob.vertices = _meshData.Vertices; - movePartsJob.normals = _meshData.Normals; - movePartsJob.tangents = _meshData.Tangents; - movePartsJob.bounds = _meshData.PartsBounds; - movePartsJob.localBounds = _meshData.PartsBoundsLocal; - movePartsJob.moveInfos = _moveInfos; - MovePartsJob jobData = movePartsJob; - RecalculateBoundsJob recalculateBoundsJob = default(RecalculateBoundsJob); - recalculateBoundsJob.bounds = _meshData.PartsBounds; - recalculateBoundsJob.boundingBox = bounds; - RecalculateBoundsJob jobData2 = recalculateBoundsJob; - _handle = jobData2.Schedule(IJobParallelForExtensions.Schedule(jobData, _moveInfos.Length, 4)); - } - - public void FinishAsyncMoving() - { - _handle.Complete(); - } - - public void ApplyData() - { - if (!_handle.IsCompleted) - { - FinishAsyncMoving(); - } - _meshData.ApplyDataToMesh(); - } - - public void Dispose() - { - _moveInfos.Dispose(); - } -} |
