Exemplo n.º 1
0
 public Pool(GameObject prefab, PrefabFactory prefabFactory, NetworkPrefabFactory networkPrefabFactory)
 {
     inactiveParts        = new List <IEntity>();
     activeParts          = new List <IEntity>();
     this.prefab          = prefab;
     PrefabFactory        = prefabFactory;
     NetworkPrefabFactory = networkPrefabFactory;
 }
Exemplo n.º 2
0
    public override void OnEnable()
    {
        base.OnEnable();
        NetwrokTimeline.OnForward(data =>
        {
            for (int i = 0; i < data.UserInputData[0].Length; i++)
            {
                for (int j = 0; j < data.UserInputData[0][i].Inputs.Length; j++)
                {
                    var userId     = data.UserInputData[0][i].UserId;
                    var eventInput = data.UserInputData[0][i].GetInput <EventInput>(j);
                    if (eventInput.Type == EventCode.GameStart)
                    {
                        var isRoomOwner = eventInput.Get <bool>(0);
                        if (!HasUser(userId))
                        {
                            var pos = isRoomOwner ? NetworkPlayerPrefab.transform.position + new Vector3(2, 0, -5) : NetworkPlayerPrefab.transform.position += new Vector3(-2, 0, -5);
                            var rot = isRoomOwner ? Quaternion.Euler(0, -90, 0) : Quaternion.Euler(0, 90, 0);

                            NetworkPrefabFactory.Instantiate(userId, data.TickId, NetworkPlayerPrefab, pos, rot);
                        }
                    }
                }
            }

            return(null);
        }).AddTo(this.Disposer);

        NetworkPlayerComponents.OnAdd().Subscribe(entity =>
        {
            if (NetworkPlayerComponents.Entities.Count == UserComponents.Entities.Count)
            {
                var evt    = new TriggerEnterEvent();
                evt.Source = GameStartId;
                EventSystem.Send(evt);
            }
        }).AddTo(this.Disposer);
    }