internal void RegisterTransformSyncType <T>(ITransformSync <T> impl) where T : class { var componentQueryDesc = TransformUtils.ConstructEntityQueryDesc <T>(requireAuthority: true, baseComponentTypes); componentQueryDesc.None = baseExcludeComponentTypes; var entityQuery = GetEntityQuery(componentQueryDesc); resetAuthorityActions.Add(typeof(T), () => Entities.With(entityQuery).ForEach( (Entity entity, DynamicBuffer <BufferedTransform> buffer, ref TicksSinceLastTransformUpdate ticksSinceLastTransformUpdate, ref TransformInternal.Component transformInternal, ref SpatialEntityId spatialEntityId) => { if (updateSystem .GetAuthorityChangesReceived(spatialEntityId.EntityId, TransformInternal.ComponentId) .Count == 0) { return; } var component = EntityManager.GetComponentObject <T>(entity); impl.OnResetAuth(worker, entity, ref transformInternal, component); buffer.Clear(); ticksSinceLastTransformUpdate = new TicksSinceLastTransformUpdate(); })); UpdateTransformQuery(); }
internal void RegisterTransformSyncType <T>(ITransformSync <T> impl) where T : class { var entityQuery = GetEntityQuery(ConstructEntityQueryDesc <T>(AuthorityRequirements.Exclude, baseComponentTypes)); applyLatestTransformActions.Add(typeof(T), () => Entities.With(entityQuery) .ForEach((EntityQueryBuilder.F_DC <TransformToSet, T>)impl.ApplyLatestTransform)); UpdateTransformQuery(); }
internal void RegisterTransformSyncType <T>(ITransformSync <T> impl) where T : class { var entityQuery = GetEntityQuery(TransformUtils.ConstructEntityQueryDesc <T>(requireAuthority: true, baseComponentTypes)); updateLatestTransformActions.Add(typeof(T), () => Entities.With(entityQuery) .ForEach((EntityQueryBuilder.F_DC <TransformToSend, T>)impl.UpdateLatestTransform)); UpdateTransformQuery(); }
internal void RegisterTransformSyncType <T>(ITransformSync <T> impl) where T : class { var entityQuery = GetEntityQuery(TransformUtils.ConstructEntityQueryDesc <T>(baseComponentTypes)); entityQuery.SetFilter(TransformInternal.ComponentAuthority.NotAuthoritative); applyLatestTransformActions.Add(typeof(T), () => Entities.With(entityQuery) .ForEach((EntityQueryBuilder.F_DC <TransformToSet, T>)impl.ApplyLatestTransform)); UpdateTransformQuery(); }
internal void RegisterTransformSyncType <T>(ITransformSync <T> impl) where T : class { CreateInitAction((EntityQueryBuilder.F_DC <KinematicStateWhenAuth, T>)impl.InitKinematicState); CreateAuthChangeAction((AuthChangeFunc <T>)impl.ApplyKinematicStateOnAuthChange); }