示例#1
0
        public static NetPlayerConnectedMessage Create(HoloNetPlayer newPlayer)
        {
            var obj = HoloNetAppModule.instance.objectPool.Pop <NetPlayerConnectedMessage>();

            obj.player = newPlayer;
            return(obj);
        }
示例#2
0
 public void LocalInit(HoloNetObjectId oid, int pid, HoloNetPlayer owner)
 {
     this.oid   = oid;
     this.pid   = pid;
     this.owner = owner;
     Debug.Log($"[HOLONET] HNO - initializing new HNO {gameObject.name}");
     PopulateNetComponents();
 }
示例#3
0
        public void SendMessage(HoloNetMessage message, HoloNetPlayer player, bool isReliable)
        {
            var photonPlayer = (PhotonHoloNetPlayer)player;

            SendInternal(message, isReliable,
                         new RaiseEventOptions {
                TargetActors = new[] { photonPlayer.photonPlayer.ActorNumber }
            }
                         );
        }
示例#4
0
        public void SetState(HoloNetObjectState state)
        {
            oid   = state.oid;
            pid   = state.pid;
            owner = HoloNetPlayer.FindPlayer(state.ownerId);

            foreach (var componentState in state.componentStates)
            {
                //TODO add cache for observables
                var observable = _observables.FirstOrDefault(o => o.id == componentState.componentId);
                observable?.stateSyncable?.ApplySyncState(componentState);
            }
        }
示例#5
0
        public void SendStateToNewPlayer(HoloNetPlayer holonetPlayer)
        {
            if (!HoloNetPlayer.Local.isServer)
            {
                return;
            }
            Debug.Log("[HOLONET] - Sending Object State Snapshot.");

            HoloNetAppModule.instance.provider.SendMessage(
                StateSyncMessage.Create(
                    PackAllStates()),
                holonetPlayer, true);
        }
示例#6
0
 public void SendMessage(HoloNetMessage message, HoloNetPlayer player, bool isReliable)
 {
     Debug.Log($"[HOLONET] Messaging - Sending message {message.GetType().Name}");
     message.sendTime = HoloNetAppModule.instance.provider.GetServerTime();
     if (player.isLocal)
     {
         ApplyMessage(message);
     }
     else
     {
         HoloNetAppModule.instance.provider.SendMessage(message, player, isReliable);
         HoloNetAppModule.instance.objectPool.Push(message);
     }
 }
示例#7
0
        public HoloNetObject SpawnObjectLocal(HoloNetObjectId oid, int prefabId, int ownerId,
                                              Vector3 position    = new Vector3(),
                                              Quaternion rotation = new Quaternion())
        {
            var prefab = GetPrefabById(prefabId);
            var result = Object.Instantiate(prefab, position, rotation).GetComponent <HoloNetObject>();

            result.transform.position = position;
            result.transform.rotation = rotation;

            RegisterObject(oid, result);
            result.LocalInit(oid, prefabId, HoloNetPlayer.FindPlayer(ownerId));

            return(result);
        }
示例#8
0
 public static void SendUnreliable(HoloNetGlobalMessage message, HoloNetPlayer player)
 {
     HoloNetAppModule.instance.messenger.SendMessage(message, player, false);
 }
示例#9
0
 public object SetObjectData(object obj, SerializationInfo info, StreamingContext context,
                             ISurrogateSelector selector)
 {
     return(HoloNetPlayer.FindPlayer(info.GetInt32("uniqueId")));
 }
示例#10
0
 public void ChangeOwnership(HoloNetPlayer newOwner)
 {
     SendReliable(HoloNetObjectTransferOwnershipMessage.Create(newOwner.uniqueId));
 }
示例#11
0
 public void SendUnreliable(HoloNetObjectMessage message, HoloNetPlayer player)
 {
     message.receiverId = oid;
     HoloNetAppModule.instance.messenger.SendMessage(message, player, false);
 }
示例#12
0
 public void OnOwnershipTransfered(HoloNetObjectTransferOwnershipMessage msg)
 {
     owner = HoloNetPlayer.FindPlayerByUniqueId(msg.newOwnerUniqueId);
 }
示例#13
0
 public IEnumerable <HoloNetObject> FindAllObjectsAuthoredBy(HoloNetPlayer author)
 {
     return(_netObjects.Values.Where(hno => hno.oid.authorId == author.uniqueId));
 }