Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

[BUG]ScheduleGroupSingle run in parralel mode

Discussion in 'Entity Component System' started by Sylmerria, Jan 27, 2019.

  1. Sylmerria

    Sylmerria

    Joined:
    Jul 2, 2012
    Posts:
    369
    Hi,

    If I am not wrong the method ScheduleGroupSingle runs in parallel because of innerloopBatchCount sets to 1.

    Code (CSharp):
    1.             public static JobHandle ScheduleGroupSingle<T>(this T jobData, ComponentGroup componentGroup, JobHandle dependsOn = default(JobHandle))
    2.                 where T : struct, IBaseJobProcessComponentData
    3.             {
    4.                 var typeT = typeof(T);            
    5.                 if (typeof(IBaseJobProcessComponentData_D).IsAssignableFrom(typeT))
    6.                     return ScheduleInternal_D(ref jobData, null, componentGroup, 1, dependsOn, ScheduleMode.Batched);            
    7.                 if (typeof(IBaseJobProcessComponentData_ED).IsAssignableFrom(typeT))
    8.                     return ScheduleInternal_ED(ref jobData, null, componentGroup, 1, dependsOn, ScheduleMode.Batched);            
    9.                 if (typeof(IBaseJobProcessComponentData_DD).IsAssignableFrom(typeT))
    10.                     return ScheduleInternal_DD(ref jobData, null, componentGroup, 1, dependsOn, ScheduleMode.Batched);            
    11.                 if (typeof(IBaseJobProcessComponentData_EDD).IsAssignableFrom(typeT))
    12.                     return ScheduleInternal_EDD(ref jobData, null, componentGroup, 1, dependsOn, ScheduleMode.Batched);            
    13.                 if (typeof(IBaseJobProcessComponentData_DDD).IsAssignableFrom(typeT))
    14.                     return ScheduleInternal_DDD(ref jobData, null, componentGroup, 1, dependsOn, ScheduleMode.Batched);            
    15.                 if (typeof(IBaseJobProcessComponentData_EDDD).IsAssignableFrom(typeT))
    16.                     return ScheduleInternal_EDDD(ref jobData, null, componentGroup, 1, dependsOn, ScheduleMode.Batched);            
    17.                 if (typeof(IBaseJobProcessComponentData_DDDD).IsAssignableFrom(typeT))
    18.                     return ScheduleInternal_DDDD(ref jobData, null, componentGroup, 1, dependsOn, ScheduleMode.Batched);            
    19.                 if (typeof(IBaseJobProcessComponentData_EDDDD).IsAssignableFrom(typeT))
    20.                     return ScheduleInternal_EDDDD(ref jobData, null, componentGroup, 1, dependsOn, ScheduleMode.Batched);            
    21.                 if (typeof(IBaseJobProcessComponentData_DDDDD).IsAssignableFrom(typeT))
    22.                     return ScheduleInternal_DDDDD(ref jobData, null, componentGroup, 1, dependsOn, ScheduleMode.Batched);            
    23.                 if (typeof(IBaseJobProcessComponentData_EDDDDD).IsAssignableFrom(typeT))
    24.                     return ScheduleInternal_EDDDDD(ref jobData, null, componentGroup, 1, dependsOn, ScheduleMode.Batched);            
    25.                 if (typeof(IBaseJobProcessComponentData_DDDDDD).IsAssignableFrom(typeT))
    26.                     return ScheduleInternal_DDDDDD(ref jobData, null, componentGroup, 1, dependsOn, ScheduleMode.Batched);            
    27.                 if (typeof(IBaseJobProcessComponentData_EDDDDDD).IsAssignableFrom(typeT))
    28.                     return ScheduleInternal_EDDDDDD(ref jobData, null, componentGroup, 1, dependsOn, ScheduleMode.Batched);            
    29.                 throw new System.ArgumentException("Not supported");
    30.             }
    Code (CSharp):
    1.             public static JobHandle ScheduleGroupSingle<T>(this T jobData, ComponentGroup componentGroup, JobHandle dependsOn = default(JobHandle))
    2.                 where T : struct, IBaseJobProcessComponentData
    3.             {
    4.                 var typeT = typeof(T);            
    5.                 if (typeof(IBaseJobProcessComponentData_D).IsAssignableFrom(typeT))
    6.                     return ScheduleInternal_D(ref jobData, null, componentGroup, -1, dependsOn, ScheduleMode.Batched);            
    7.                 if (typeof(IBaseJobProcessComponentData_ED).IsAssignableFrom(typeT))
    8.                     return ScheduleInternal_ED(ref jobData, null, componentGroup, -1, dependsOn, ScheduleMode.Batched);            
    9.                 if (typeof(IBaseJobProcessComponentData_DD).IsAssignableFrom(typeT))
    10.                     return ScheduleInternal_DD(ref jobData, null, componentGroup, -1, dependsOn, ScheduleMode.Batched);            
    11.                 if (typeof(IBaseJobProcessComponentData_EDD).IsAssignableFrom(typeT))
    12.                     return ScheduleInternal_EDD(ref jobData, null, componentGroup, -1, dependsOn, ScheduleMode.Batched);            
    13.                 if (typeof(IBaseJobProcessComponentData_DDD).IsAssignableFrom(typeT))
    14.                     return ScheduleInternal_DDD(ref jobData, null, componentGroup, -1, dependsOn, ScheduleMode.Batched);            
    15.                 if (typeof(IBaseJobProcessComponentData_EDDD).IsAssignableFrom(typeT))
    16.                     return ScheduleInternal_EDDD(ref jobData, null, componentGroup, -1, dependsOn, ScheduleMode.Batched);            
    17.                 if (typeof(IBaseJobProcessComponentData_DDDD).IsAssignableFrom(typeT))
    18.                     return ScheduleInternal_DDDD(ref jobData, null, componentGroup, -1, dependsOn, ScheduleMode.Batched);            
    19.                 if (typeof(IBaseJobProcessComponentData_EDDDD).IsAssignableFrom(typeT))
    20.                     return ScheduleInternal_EDDDD(ref jobData, null, componentGroup, -1, dependsOn, ScheduleMode.Batched);            
    21.                 if (typeof(IBaseJobProcessComponentData_DDDDD).IsAssignableFrom(typeT))
    22.                     return ScheduleInternal_DDDDD(ref jobData, null, componentGroup, -1, dependsOn, ScheduleMode.Batched);            
    23.                 if (typeof(IBaseJobProcessComponentData_EDDDDD).IsAssignableFrom(typeT))
    24.                     return ScheduleInternal_EDDDDD(ref jobData, null, componentGroup, -1, dependsOn, ScheduleMode.Batched);            
    25.                 if (typeof(IBaseJobProcessComponentData_DDDDDD).IsAssignableFrom(typeT))
    26.                     return ScheduleInternal_DDDDDD(ref jobData, null, componentGroup, -1, dependsOn, ScheduleMode.Batched);            
    27.                 if (typeof(IBaseJobProcessComponentData_EDDDDDD).IsAssignableFrom(typeT))
    28.                     return ScheduleInternal_EDDDDDD(ref jobData, null, componentGroup, -1, dependsOn, ScheduleMode.Batched);            
    29.                 throw new System.ArgumentException("Not supported");
    30.             }
     
  2. tertle

    tertle

    Joined:
    Jan 25, 2011
    Posts:
    3,753
    I believe you are correct, i can't see any other explanation except it being a mistake.

    ScheduleGroup and ScheduleGroupSingle seem to be identical.
     
  3. Joachim_Ante

    Joachim_Ante

    Unity Technologies

    Joined:
    Mar 16, 2005
    Posts:
    5,203
    You are right. Will fix for next build. Thanks.
     
    Spy-Shifty and FROS7 like this.