Esempio n. 1
0
        protected override void OnUpdate()
        {
            if (enterGameQuery.IsEmptyIgnoreFilter == false)
            {
                using (var enterGamePlayerEntitys = enterGameQuery.ToEntityArray(Allocator.TempJob))
                {
                    for (var i = 0; i < enterGamePlayerEntitys.Length; ++i)
                    {
                        if (EntityManager.HasComponent <PlayerActorType>(enterGamePlayerEntitys[i]) == false)
                        {
                            EntityManager.AddComponentData(enterGamePlayerEntitys[i], new PlayerActorType {
                                value = actorTypeBegin
                            });
                            //endBarrier.curCommandBuffer.AddComponent(enterGamePlayerEntitys[i], new PlayerActorType { value = 1 });
                        }
                    }
                }
            }


            //
            var endCommandBuffer = endBarrier.CreateCommandBuffer();

            Entities
            .WithAllReadOnly <NetworkConnection, PlayerActorSelectNetMessage>()   //可以没有Player时修改PlayerActorType
            .WithNone <NetworkDisconnectedMessage>()
            .ForEach((Entity playerEntity, ref PlayerActorSelectNetMessage playerActorSelectNetMessage) =>
            {
                if (playerActorSelectNetMessage.value > actorTypeEnd || playerActorSelectNetMessage.value < actorTypeBegin)
                {
                    endCommandBuffer.AddComponent(playerEntity, new NetworkDisconnectedMessage {
                        error = (short)DisconnectedErrorsInSystem.PlayerActorSelect
                    });
                    return;
                }

                var playerActorType = new PlayerActorType {
                    value = playerActorSelectNetMessage.value
                };

                if (EntityManager.HasComponent <PlayerActorType>(playerEntity))
                {
                    EntityManager.SetComponentData(playerEntity, playerActorType);
                }
                else
                {
                    EntityManager.AddComponentData(playerEntity, playerActorType);
                    //endBarrier.curCommandBuffer.AddComponent(playerEntity, playerActorType);
                }
            });
        }
Esempio n. 2
0
        protected override void OnUpdate()
        {
            if (startPoints.Length == 0)
            {
                return;
            }

#if false
            var createQuery = Entities
                              .WithAllReadOnly <Player, Observer, PlayerGameStartMessage, PlayerActorType>()
                              .WithNone <NetworkDisconnectedMessage>()
                              .ToEntityQuery();
            if (createQuery.IsEmptyIgnoreFilter == false)
            {
                using (var playerEntitys = createQuery.ToEntityArray(Allocator.TempJob))
                    using (var players = createQuery.ToComponentDataArray <Player>(Allocator.TempJob))
                        using (var observers = createQuery.ToComponentDataArray <Observer>(Allocator.TempJob))
                            using (var actorTypes = createQuery.ToComponentDataArray <PlayerActorType>(Allocator.TempJob))
                            {
                                for (var i = 0; i < playerEntitys.Length; ++i)
                                {
                                    Debug.LogWarning("createQuery");

                                    Entity          playerEntity = playerEntitys[i];
                                    Player          player       = players[i];
                                    Observer        observer     = observers[i];
                                    PlayerActorType actorType    = actorTypes[i];

                                    try
                                    {
                                        var actorOwner = new ActorOwner {
                                            playerEntity = playerEntity, playerId = player.id
                                        };
                                        var actorEntity = actorServerSystem.CreateInServer(actorOwner, actorType.value);

                                        var t = findNearStartPointT(observer.position);

                                        EntityManager.SetComponentData(actorEntity, new Translation {
                                            Value = getStartPoint(t)
                                        });
                                        EntityManager.SetComponentData(actorEntity, new Rotation {
                                            Value = t.rotation
                                        });
                                    }
                                    catch (System.Exception e)
                                    {
                                        Debug.Log("System.Exception e");
                                        Debug.LogException(e);
                                        PostUpdateCommands.AddComponent <NetworkDisconnectedMessage>(playerEntity);
                                    }
                                }
                            }
            }
#else
            Entities
            .WithAllReadOnly <Player, ObserverPosition, PlayerGameStartNetMessage, PlayerActorType>()
            .WithNone <NetworkDisconnectedMessage>()
            .ForEach((Entity playerEntity, ref Player player, ref ObserverPosition observer, ref PlayerActorType actorType) =>
            {
                var t   = getStartPointT(observer.value);
                var pos = getStartPoint(t);
                var rot = t.rotation;

                var actorOwner = new ActorOwner {
                    playerEntity = playerEntity, playerId = player.id
                };
                var actorEntity = actorSpawnerMap.CreateInServer(actorType.value, actorOwner);

                EntityManager.SetComponentData(actorEntity, new Translation {
                    Value = pos
                });
                EntityManager.SetComponentData(actorEntity, new Rotation {
                    Value = rot
                });
            });
#endif
        }