IEnumerator Login(string username, string password) { NetObj loginRequest = new NetObj(); loginRequest.resourcePath = API_CLIENT.serverLocation + "api/login"; loginRequest.payload = "{\n\"username\":\"" + username + "\",\n\"password\":\"" + password + "\"\n}"; loginScreen.SetActive(false); loginButton.SetActive(false); connectionSprite.SetActive(true); yield return(loginRequest.Post()); connectionSprite.SetActive(false); if (loginRequest.responce.responseHeaders ["STATUS"] == API_CLIENT.okCode) { loggedIn = true; successScreen.SetActive(true); Debug.Log(loginRequest.responce.text); } else { Debug.Log(loginRequest.responce.text); loginScreen.SetActive(true); loginButton.SetActive(true); } }
void InstantiateOtherNetObj(NetObj otherNetObj) { GameObject prefab = GetPrefabFromNetObjType(otherNetObj.Type); var go = Instantiate(prefab, Vector3.zero, Quaternion.identity); var netObjGene = go.GetComponent <NetObjGene>(); netObjGene.NetObj = otherNetObj; netObjGene.IsLocalPlayer = false; netObjGene.OfflineMode = false; var camera = go.GetComponentInChildren <Camera>(); if (camera != null) { camera.enabled = false; } var listener = go.GetComponentInChildren <AudioListener>(); if (listener != null) { listener.enabled = false; } go.GetComponentInChildren <Rigidbody>().isKinematic = true; _otherNetObjs[otherNetObj.Id] = netObjGene; }
// Update is called once per frame void Update() { for (int i = 0; i < netObjs.Count; i++) { NetObj temp = netObjs[i]; temp.obj.transform.position = Vector3.Lerp(temp.obj.transform.position, temp.followVec, 0.2f); } }
// Use this for initialization IEnumerator Start() { // Test code -- To be moved out into a connection testing function/class. // Asks if server is online, via api/status which returns an ok 200 http responce. NetObj callServer = new NetObj(); callServer.contentType = ""; callServer.resourcePath = serverLocation + "api/status"; yield return(callServer.Post()); if (callServer.responce.responseHeaders ["STATUS"] == okCode) { isServerAlive = true; } }
void PositionSync() { if (positionQue.Count == 0) { return; } PositionSync temp = positionQue[0]; int i = 0; bool t = false; while (i < netObjs.Count) { if (netObjs[i].ID == temp.ID) { if (ID != temp.ID) { //netObjs[i].obj.transform.position = Vector3.Lerp(netObjs[i].obj.transform.position, temp.position, 0.5f); //netObj[i].transform.position = temp.position; //netObjs[i].followVec = temp.position; NetObj netObj = netObjs[i]; netObj.followVec = temp.position; netObjs[i] = netObj; } t = true; break; } i++; } if (t == false && ID.Equals(temp.ID) == false) { Debug.Log("Receive new Player"); GameObject tempObj = Instantiate <GameObject>(Resources.Load <GameObject>("NetObj")); NetObj tempNetObj = new NetObj { obj = tempObj, ID = temp.ID, followVec = temp.position }; tempObj.name = temp.ID.ToString() + "_NetObj"; netObjs.Add(tempNetObj); } positionQue.RemoveAt(0); }
public void KickClient(GameClient clientToKick) { _connectedClients.KickClient(clientToKick); foreach (var netObj in _netObjects.Values.Where(x => x.GameClientId == clientToKick.Id)) { _udpServer.MessageSender.SendDestroyNetObjToOtherClients(clientToKick, netObj.Id); } NetObj removedNetObj = null; _netObjects.Where(x => x.Value.GameClientId == clientToKick.Id).ToList().ForEach(x => _netObjects.Remove(x.Key, out removedNetObj)); if (removedNetObj == null) { throw new Exception("Failed to remove netobj"); } _udpServer.MessageSender.SendPlayerDisconnectedToAllClients(clientToKick); }
void OnNetObjCreated(GameClient sender, NetObj newNetObj) { _netObjects[newNetObj.Id] = newNetObj; _udpServer.MessageSender.SendNewNetObjToOtherClients(sender, newNetObj); }
void OnNewNetObj(NetObj newNetObj) { Debug.Log("New net obj! " + newNetObj.GameClientId + ": " + newNetObj.Id); InstantiateOtherNetObj(newNetObj); }
public void SendNetObjCreate(NetObj newNetObj) => SendMessageToServer(new UdpMessage("netobjcreate", newNetObj));
public void SendNewNetObjToOtherClients(GameClient client, NetObj newNetObj) { SendMessageToOtherClients(new UdpMessage("newnetobj", newNetObj), client); }
void SendNewNetObjToClient(NetObj item, IPEndPoint iPEndPoint) { SendMessageToClient(new UdpMessage("newnetobj", item), iPEndPoint); }