| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | 
							- using GPUECSAnimationBaker.Engine.AnimatorSystem;
 
- using Unity.Burst;
 
- using Unity.Collections;
 
- using Unity.Entities;
 
- using Unity.Transforms;
 
- using UnityEngine;
 
- namespace GPUECSAnimationBaker.Samples.SampleScenes._5_Attachments
 
- {
 
-     public class AttachmentScript : MonoBehaviour
 
-     {
 
-         public int attachmentToSetIndex;
 
-         
 
-         public void Attach()
 
-         {
 
-             AttachmentScriptSystem blendScriptSystem =
 
-                 World.DefaultGameObjectInjectionWorld.GetOrCreateSystemManaged<AttachmentScriptSystem>();
 
-             blendScriptSystem.changeAttachments = true;
 
-             blendScriptSystem.attachmentToSetIndex = attachmentToSetIndex;
 
-         }
 
-     }
 
-     public partial class AttachmentScriptSystem : SystemBase
 
-     {
 
-         public bool changeAttachments;
 
-         public int attachmentToSetIndex;
 
-         
 
-         protected override void OnUpdate()
 
-         {
 
-             if (changeAttachments)
 
-             {
 
-                 changeAttachments = false;
 
-                 EntityManager entityManager = World.EntityManager;
 
-                 Entity gpuEcsAnimatorEntity = SystemAPI.GetSingletonEntity<AttachmentPrefabBufferElement>();
 
-                 DynamicBuffer<AttachmentPrefabBufferElement> attachments = SystemAPI.GetSingletonBuffer<AttachmentPrefabBufferElement>();
 
-                 AttachmentPrefabBufferElement attachmentPrefab = attachments[attachmentToSetIndex];
 
-                 
 
-                 EntityCommandBuffer ecbDelete = new EntityCommandBuffer(Allocator.Temp);
 
-                 Entities.ForEach((
 
-                     in GpuEcsAttachmentComponent gpuEcsAttachment,
 
-                     in Entity entity
 
-                 ) =>
 
-                 {
 
-                     if(gpuEcsAttachment.attachmentAnchorId == (int)attachmentPrefab.anchor)
 
-                         ecbDelete.DestroyEntity(entity); 
 
-                 }).Run();
 
-                 ecbDelete.Playback(entityManager);
 
-                 Entity newAttachment = entityManager.Instantiate(attachmentPrefab.attachmentPrefab);
 
-                 entityManager.AddComponent<Parent>(newAttachment);
 
-                 entityManager.SetComponentData(newAttachment, new Parent() 
 
-                 {
 
-                     Value = gpuEcsAnimatorEntity
 
-                 });
 
-                 entityManager.AddComponent<GpuEcsAttachmentComponent>(newAttachment);
 
-                 entityManager.SetComponentData<GpuEcsAttachmentComponent>(newAttachment, new GpuEcsAttachmentComponent()
 
-                 {
 
-                     attachmentAnchorId = (int) attachmentPrefab.anchor,
 
-                     gpuEcsAnimatorEntity = gpuEcsAnimatorEntity
 
-                 });
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |