public override void InvokeOnAuthorityGainedCallbacks(Dictionary <Unity.Entities.Entity, InjectableStore> entityToInjectableStore) { if (AuthorityGainedComponentGroup.IsEmptyIgnoreFilter) { return; } Profiler.BeginSample("ExhaustiveRepeated"); var entities = AuthorityGainedComponentGroup.GetEntityArray(); var changeOpsLists = AuthorityGainedComponentGroup.GetComponentDataArray <AuthorityChanges <Improbable.Gdk.Tests.ExhaustiveRepeated.Component> >(); // Call once on all entities unless they flip-flopped back into the state they started in for (var i = 0; i < entities.Length; i++) { var injectableStore = entityToInjectableStore[entities[i]]; if (!injectableStore.TryGetInjectablesForComponent(readerWriterInjectableId, out var readersWriters)) { continue; } if (IsFirstAuthChange(Authority.Authoritative, changeOpsLists[i])) { foreach (Requirable.ReaderWriterImpl readerWriter in readersWriters) { readerWriter.OnAuthorityChange(Authority.Authoritative); } } } Profiler.EndSample(); }
public override void MarkAuthorityGainedForActivation(Dictionary <Unity.Entities.Entity, MonoBehaviourActivationManager> entityToManagers) { if (AuthorityGainedComponentGroup.IsEmptyIgnoreFilter) { return; } var authoritiesChangedTags = AuthorityGainedComponentGroup.GetComponentDataArray <AuthorityChanges <Improbable.Gdk.Tests.AlternateSchemaSyntax.Connection.Component> >(); var entities = AuthorityGainedComponentGroup.GetEntityArray(); for (var i = 0; i < entities.Length; i++) { var activationManager = entityToManagers[entities[i]]; // Call once except if flip-flopped back to starting state if (IsFirstAuthChange(Authority.Authoritative, authoritiesChangedTags[i])) { activationManager.ChangeAuthority(componentId, Authority.Authoritative); } } }