private void HandleGeneralUpdate(int index, DemoCoder decoder) { if (index == 0) { Henge henge = GameObject.FindObjectOfType <Henge>(); henge.SetRuneState(decoder.GetPortalRunes(index, henge.getSize())); henge.transform.position = decoder.GetPosition(index); henge.transform.rotation = decoder.GetRotation(index); } else { GameObject instance; int id = decoder.GetID(index); networkedObjects.TryGetValue(id, out instance); EnemyHealth eh = instance.GetComponent <EnemyHealth>(); if (eh != null) { //keeps track of networked and local at the same time int currentHealth = eh.GetHealth(); int networkedHealth = decoder.GetEnemyHealth(index) - eh.transientHealthLoss; //don't reset transient, since this may still need to be transmitted eh.SetHealth(Math.Min(currentHealth, networkedHealth)); } else { Debug.LogError("Couldn't find enemy health tracking from network id" + id); } instance.transform.position = decoder.GetPosition(index); instance.transform.rotation = decoder.GetRotation(index); } }
// Use this for initialization void Start() { networkText = networkTextObject.GetComponent <Text>(); framerateText = framerateTextObject.GetComponent <Text>(); gameStateText = gameStateTextObject.GetComponent <Text>(); positionARKitText = positionARKitObject.GetComponent <Text>(); rotationARKitText = rotationARKitObject.GetComponent <Text> (); positionTrackerText = positionTrackerObject.GetComponent <Text> (); rotationTrackerText = rotationTrackerObject.GetComponent <Text> (); positionEngineText = positionEngineObject.GetComponent <Text> (); rotationEngineText = rotationEngineObject.GetComponent <Text> (); positionCParentText = positionCParentObject.GetComponent <Text>(); rotationCParentText = rotationCParentObject.GetComponent <Text>(); positionARKitText.text = "ARKit Pos"; rotationARKitText.text = "ARKit Rot"; positionTrackerText.text = "Tracker Pos"; rotationTrackerText.text = "Tracker Rot"; positionEngineText.text = "Engine Pos"; rotationEngineText.text = "Engine Rot"; networkText.text = "Network Status"; ARManager = GameObject.FindObjectOfType <UnityARCameraManager>(); playerHealth = playerHealthObject.GetComponent <PlayerHealth>(); henge = hengeObject.GetComponent <Henge>(); gameManager = FindObjectOfType <GameManager>(); //frameTimes = new Queue<float>(); }
// Use this for initialization void Start() { Debug.Log("difficulty: " + gameState); enemyManager = FindObjectOfType <EnemyManager>(); networkManager = FindObjectOfType <NetworkManager>(); henge = hengeObject.GetComponent <Henge>(); playerHealth = FindObjectOfType <PlayerHealth>(); }
// Use this for initialization void Start() { henge = GameObject.Find("Henge").GetComponent <Henge>(); if (henge == null) { Debug.LogError("Couldn't find the Henge for " + gameObject); } }
public void SendGeneralUpdate() { if (isConnection() /* && Input.GetKeyDown(KeyCode.U)*/) { //Debug.Log("Trying to update client on " + watchList.Count + " objects"); //we have switched to a watch list instead of a queue //since this is a dictionary element we need to iterate through //using foreach and then referring to the id and Gameobject as //kvp.Key and kvp.Value DemoCoder encoder = new DemoCoder(1024); Henge henge = GameObject.Find("Henge").GetComponent <Henge>(); encoder.addPortal(henge.GetRuneState(), henge.transform); // We have removed empty, because we are always sending the henge information foreach (KeyValuePair <int, GameObject> kvp in watchList) { //Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value); if (encoder.isFull()) { break; } //int id = gameObject.GetComponent<NetworkIdentity>().getObjectId(); EnemyHealth eh = kvp.Value.GetComponent <EnemyHealth>(); if (eh != null) { encoder.addEnemyUpdate(kvp.Key, eh.GetHealth(), kvp.Value.transform); } else { Debug.LogError("Failed to get the Enemy Health for id " + kvp.Key); encoder.addEnemyUpdate(kvp.Key, -1, kvp.Value.transform); } } byte error3; foreach (KeyValuePair <int, GameObject> kvp in ARPlayers) { NetworkTransport.Send(socketId, kvp.Key, myUpdateChannelId, encoder.getArray(), 1024, out error3); } } }