void UpdateSphereColliders(NativeArray <Entity> entities,
                            [ReadOnly] ArchetypeChunkComponentObjects <SphereCollider> sphereColliders)
 {
     for (int i = 0, length = sphereColliders.Length; i < length; ++i)
     {
         SphereCollider sphere = sphereColliders[i];
         if (sphere != null)
         {
             SphereColliderComponentData sphereInfo = new SphereColliderComponentData();
             sphereInfo.Center    = sphere.center;
             sphereInfo.Radius    = sphere.radius;
             sphereInfo.IsTrigger = sphere.isTrigger ? (byte)1 : (byte)0;
             Utils.Utils.AddOrSetComponent(entities[i], sphereInfo, GetComponentDataFromEntity <SphereColliderComponentData>(true), EntityManager);
         }
     }
 }
Exemple #2
0
                public void Execute(ArchetypeChunk chunk, int chunkIndex, int firstEntityIndex)
                {
                    NativeArray <SphereColliderComponentData> sphereColliders = chunk.GetNativeArray(SphereColliderType);
                    NativeArray <Position> positions = chunk.GetNativeArray(PositionType);
                    NativeArray <Scale>    scales    = chunk.GetNativeArray(ScaleType);

                    NativeArray <Entity> entities = chunk.GetNativeArray(EntityType);

                    float3 zero = float3.zero;

                    for (int i = 0, length = sphereColliders.Length; i < length; ++i)
                    {
                        SphereColliderComponentData sphere = sphereColliders[i];
                        Position position = positions[i];
                        Scale    scale    = scales[i];

                        SpherecastCommand sphereCast = new SpherecastCommand(position.Value + sphere.Center,
                                                                             sphere.Radius * math.max(scale.Value.z, math.max(scale.Value.y, scale.Value.x)),
                                                                             zero, 0,
                                                                             0);
                        SphereCasts.TryAdd(entities[i], sphereCast);
                    }
                }