Пример #1
0
        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();
        }
Пример #3
0
        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();
        }
Пример #4
0
        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);
 }