Exemplo n.º 1
0
    public void IssueSpawnCommand(string obj_name, Vector3 position)
    {
        InstantiationPacket packet = new InstantiationPacket("D_Instantiate");

        packet.obj_name    = obj_name;
        packet.item_net_id = serverNetworker.GetNextItemID();
        packet.x           = position.x;
        packet.y           = position.y;
        packet.z           = position.z;

        serverNetworker.SendPacketToAll(packet, 999);
        serverNetworker.AddRegister(packet, 999);
    }
Exemplo n.º 2
0
    public void SpawnRequest(string obj_name, Vector3 position, Vector3 rotation)
    {
        InstantiationPacket packet = new InstantiationPacket("D_Instantiate");

        packet.obj_name    = obj_name;
        packet.item_net_id = -1;
        packet.x           = position.x;
        packet.y           = position.y;
        packet.z           = position.z;

        packet.rotX = rotation.x;
        packet.rotY = rotation.y;
        packet.rotZ = rotation.z;

        clientNetworker.SendPacketToServer(packet);
    }
Exemplo n.º 3
0
    public GameObject SpawnServerside(string obj_name, int playerId, Vector3 position, Vector3 rotation)
    {
        int itemId = serverNetworker.GetNextItemID();

        GameObject newObj = null;

        newObj = Instantiate(FindNetObject(obj_name), position, Quaternion.Euler(rotation));

        if (newObj.GetComponent <ScapeNet_Network_ID>() == null)
        {
            Debug.LogError("Object " + newObj + " cannot be networked, as it does not have a Network_ID component.");
        }

        newObj.GetComponent <ScapeNet_Network_ID>().players_id = playerId;
        newObj.GetComponent <ScapeNet_Network_ID>().object_id  = itemId;

        InstantiationPacket packet = new InstantiationPacket("D_Instantiate");

        packet.obj_name    = obj_name;
        packet.item_net_id = itemId;
        packet.x           = position.x;
        packet.y           = position.y;
        packet.z           = position.z;

        packet.rotX = rotation.x;
        packet.rotY = rotation.y;
        packet.rotZ = rotation.z;

        //If editor, running client and server on once instance. Then do not respawn on clients
        if (GetComponent <ScapeNet_Identifier>().isServer&& !GetComponent <ScapeNet_Identifier>().isClient)
        {
            serverNetworker.SendPacketToAll(packet, 999);
            Console.WriteLine("Sent");
            serverNetworker.AddRegister(packet, 999);
        }

        identifier.currentAliveNetworkedObjects.Add(newObj);

        return(newObj);
    }
Exemplo n.º 4
0
        private void AddDefaultPacketReceives()
        {
            Packet_Register.Instance.serverPacketReceivedRegister.Add("D_Connection", packetObj =>
            {
                ConnectionPacket connectionPacket = (ConnectionPacket)packetObj[0];
                NetConnection senderConnection    = (NetConnection)packetObj[2];

                //Register Player
                int newID = GetNextPlayerID();
                playersConnection.Add(senderConnection, newID);
                players.Add(newID, senderConnection);
                connectionPacket.player_id = newID;

                SendPacketToExistingConnection(connectionPacket, senderConnection, -1);

                return(false);
            });

            Packet_Register.Instance.serverPacketReceivedRegister.Add("D_OnConnect", packetObj =>
            {
                OnConnectPacket instantiate = (OnConnectPacket)packetObj[0];
                int playerId       = (int)packetObj[1];
                NetConnection conn = (NetConnection)packetObj[2];


                foreach (PacketWithId <InstantiationPacket> ip in registers)
                {
                    SendPacketToExistingConnection(ip.packet, conn, ip.playerId);
                }

                if (funcOnNewConnection != null)
                {
                    funcOnNewConnection.Invoke(packetObj);
                }

                return(false);
            });


            Packet_Register.Instance.serverPacketReceivedRegister.Add("D_Instantiate", packetObj =>
            {
                InstantiationPacket instantiate = (InstantiationPacket)packetObj[0];
                int playerId = (int)packetObj[1];

                instantiate.item_net_id = GetNextItemID();
                registers.Add(new PacketWithId <InstantiationPacket>(instantiate, playerId));

                SendPacketToAll(instantiate, playerId);

                return(false);
            });

            Packet_Register.Instance.serverPacketReceivedRegister.Add("D_Delete", packetObj =>
            {
                DeletePacket instantiate = (DeletePacket)packetObj[0];
                int playerId             = (int)packetObj[1];
                NetConnection conn       = (NetConnection)packetObj[2];

                int idToRemove = -1;

                for (int i = 0; i < registers.Count; i++)
                {
                    //Found packet we need to delete
                    if (registers[i].packet.item_net_id == instantiate.item_net_id)
                    {
                        idToRemove = i;
                        break;
                    }
                }

                registers.RemoveAt(idToRemove);
                SendPacketToAll(instantiate, playerId);
                return(false);
            });

            Packet_Register.Instance.serverPacketReceivedRegister.Add("D_PositionRotation", packetObj =>
            {
                PositionRotation packet = (PositionRotation)packetObj[0];
                int playerId            = (int)packetObj[1];
                NetConnection conn      = (NetConnection)packetObj[2];

                SendPacketToAll(packet, playerId);
                return(false);
            });
        }
Exemplo n.º 5
0
 public void AddRegister(InstantiationPacket packet, int playerId)
 {
     registers.Add(new PacketWithId <InstantiationPacket>(packet, playerId));
 }