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); }
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); }
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); }
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); }); }
public void AddRegister(InstantiationPacket packet, int playerId) { registers.Add(new PacketWithId <InstantiationPacket>(packet, playerId)); }