Exemplo n.º 1
0
        protected override void OnUpdate()
        {
            var entity = GetSingletonEntity <SpawnPlayerServer>();
            var buffer = EntityManager.GetBuffer <SpawnPlayerBuffer>(entity);

            if (buffer.Length == 0)
            {
                return;
            }

            var spawnPlayers = buffer.ToNativeArray(Allocator.Temp);

            buffer.Clear();

            foreach (var spawnPlayer in spawnPlayers)
            {
                //创建Player
                var e = EntityManager.Instantiate(playerPrefab);

                var position = GetSpawnPoint();
                var rotation = Quaternion.identity;

                CreateCharacterUtilities.CreateCharacterComponent(EntityManager, e, position, rotation);

                EntityManager.AddBuffer <UserCommandBuffer>(e);

                if (spawnPlayer.IsRobot)
                {
                    EntityManager.AddComponentData(e, new Robot());
                }
                else
                {
                    EntityManager.AddComponentData(e, new Connection
                    {
                        SessionId = spawnPlayer.PlayerId
                    });
                }


                var id = networkServerSystem.RegisterEntity(-1, (ushort)EntityType.Character, spawnPlayer.PlayerId, e);

                //var interpolatedState = EntityManager.GetComponentData<CharacterInterpolatedState>(e);
                //interpolatedState.MaterialId =  (byte) (spawnPlayer.PlayerId % 4);
                //EntityManager.SetComponentData(e, interpolatedState);

                EntityManager.SetComponentData(e, new ReplicatedEntityData
                {
                    Id = id,
                    PredictingPlayerId = spawnPlayer.PlayerId
                });
            }


            spawnPlayers.Dispose();
        }
Exemplo n.º 2
0
        protected override void OnUpdate()
        {
            Entities
            .WithStructuralChanges()
            .ForEach((Entity entity,
                      ref ReplicatedEntityData replicatedData,
                      in GameEntity gameEntity) =>
            {
                if (replicatedData.Id != -1)
                {
                    return;
                }


                var id = networkServerSystem.RegisterEntity(-1, (ushort)gameEntity.Type,
                                                            replicatedData.PredictingPlayerId, entity);
                replicatedData.Id = id;
            }).Run();
        }
        protected override void OnUpdate()
        {
            ////TODO 临时在这里生成Table数据
            if (isInit)
            {
                return;
            }
            isInit = true;
            //  FSLog.Info($"RegisterEntity");
            var worldSceneEntitiesSystem = World.GetOrCreateSystem <WorldSceneEntitiesSystem>();

            networkServerSystem.ReserveSceneEntities(worldSceneEntitiesSystem.SceneEntities.Count);
            for (var i = 0; i < worldSceneEntitiesSystem.SceneEntities.Count; ++i)
            {
                var entity = worldSceneEntitiesSystem.SceneEntities[i];

                var type = EntityManager.HasComponent <GameEntity>(entity)
                    ? EntityManager.GetComponentData <GameEntity>(entity).Type
                    : EntityType.Table;
                FSLog.Info($"RegisterEntity:{i},{type}");
                networkServerSystem.RegisterEntity(i, (ushort)type, -1, entity);
            }
        }