Beispiel #1
0
        private void ClientHandleUMsgSpawnObject(Message m)
        {
            if (isServer)
            {
                return;
            }

            UMsgSpawnObject msg = m as UMsgSpawnObject;

            GameObject newObject = null;

            if (msg.sceneId != UNetworkIdentity.InvalidNetId)
            {
                newObject = sceneInitialObjects[msg.sceneId].gameObject;
                newObject.SetActive(true);
            }
            else
            {
                newObject = GameObject.Instantiate(registeredPrefabs[msg.assetId]);
            }

            UNetworkIdentity iden = newObject.GetComponent <UNetworkIdentity>();

            iden.FromBytes(msg.objectState, true);
            iden.netId = msg.netId;
            networkObjects.Add(iden.netId, iden);
            iden.CallEventOnSpawn();
        }
Beispiel #2
0
        public void SpawnWithAuthority(GameObject networkGameObject, ulong owner)
        {
            if (!isServer)
            {
                return;
            }

            UNetworkIdentity iden = networkGameObject.GetComponent <UNetworkIdentity>();

            if (iden.sceneId != UNetworkIdentity.InvalidNetId)
            {
                iden.gameObject.SetActive(true);
            }

            iden.netId   = netIdCounter++;
            iden.ownerId = owner;
            networkObjects.Add(iden.netId, iden);
            serverObject.SendToAll(new UMsgSpawnObject(iden), Lidgren.Network.NetDeliveryMethod.ReliableOrdered);
            iden.CallEventOnSpawn();
        }