private GameEntity RollBackEntityBase(GameContext context, GameEntity localEntity, GameEntity serverEntity)
    {
        if (localEntity == null)
        {
            localEntity = context.CreateEntity();
        }

        GameObject obj = null;

        if (localEntity.hasView)
        {
            obj = localEntity.view.gameObject;
        }

        localEntity.RemoveAllComponents();
        serverBuffer.Clear();
        PackEntityUtility.Pack(serverEntity, serverBuffer);
        DoCover(serverBuffer, localEntity);

        if (localEntity.hasId)
        {
            localEntity.RemoveId();
        }

        if (obj != null)
        {
            localEntity.AddView(obj);
        }

        return(localEntity);
    }
Exemplo n.º 2
0
    public void Initialize()
    {
        var e = _context.tickEntity;

        e.isSync = true;
        PackEntityUtility.Pack(e, _server.CreatedEntities);
        e.isWasSynced = true;
        _server.CreatedEntitiesCount++;
        _context.SetStartTime(0, DateTime.Now);
        _context.SetLastTick(0);
    }
        protected override void Execute(List <GameEntity> entities)
        {
            if (_server.State != ServerState.Working)
            {
                return;
            }

            foreach (var e in entities)
            {
                PackEntityUtility.Pack(e, _server.CreatedEntities);

                e.isWasSynced = true;
                _server.CreatedEntitiesCount++;
            }
        }
Exemplo n.º 4
0
        protected override void Execute(List <GameEntity> entities)
        {
            Logger.I.Log(this, "Creating world snapshot.");

            var e = _game.CreateEntity();

            e.AddWorldState(0, _buffer);
            e.isDestroyed = true;

            _buffer.Clear();
            _syncGroup.GetEntities(_syncBuffer);

            foreach (var entity in _syncBuffer)
            {
                if (!entity.isDestroyed)
                {
                    e.worldState.EntityCount++;
                    PackEntityUtility.Pack(entity, _buffer);
                }
            }
        }
Exemplo n.º 5
0
        public static ClientWorldState MakeState(GameContext game, List <GameEntity> syncBuffer)
        {
            var    buffer      = new BitBuffer(512);
            ushort entityCount = 0;
            var    syncGroup   = game.GetGroup(GameMatcher.Sync);

            syncGroup.GetEntities(syncBuffer);
            foreach (var entity in syncBuffer)
            {
                if (!entity.isDestroyed)
                {
                    entityCount++;
                    PackEntityUtility.Pack(entity, buffer);
                }
            }

            var worldState = new ClientWorldState {
                EntityCount = entityCount, Buffer = buffer
            };

            return(worldState);
        }