using Unity.Entities;
using Unity.Rendering;
namespace GarmentButton.VerletIntegration.Tear
{
[UpdateInGroup(typeof(VerletIntegrationPhysicsGroupSystems))]
[UpdateAfter(typeof(CheckStretchesSystem))]
public partial class SetChangeToMeshSystem : SystemBase
{
protected override void OnCreate()
{
RequireForUpdate<UpdatedTringlesTag>();
RequireForUpdate<MaterialMeshInfo>();
RequireForUpdate<Tringle>();
}
protected override void OnUpdate()
{
var ecbSingleton = SystemAPI.GetSingleton<EndSimulationEntityCommandBufferSystem.Singleton>().CreateCommandBuffer(World.Unmanaged);
foreach (var (meshInfo,tringles,meshArray,entity) in SystemAPI.Query<RefRO<MaterialMeshInfo>, DynamicBuffer<Tringle>,RenderMeshArray>().WithEntityAccess().WithAll<UpdatedTringlesTag>())
{
var mesh = meshArray.GetMesh(meshInfo.ValueRO);
int[] tringlesForMesh = new int[tringles.Length];
for (int i = 0; i < tringlesForMesh.Length; i++)
tringlesForMesh[i] = tringles[i].Index;
mesh.SetTriangles(tringlesForMesh,0);
mesh.RecalculateNormals();
ecbSingleton.RemoveComponent<UpdatedTringlesTag>(entity);
}
}
}
}