Пример #1
0
 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);
     }
 }
Пример #2
0
    // 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>();
    }
Пример #3
0
 // Use this for initialization
 void Start()
 {
     Debug.Log("difficulty: " + gameState);
     enemyManager   = FindObjectOfType <EnemyManager>();
     networkManager = FindObjectOfType <NetworkManager>();
     henge          = hengeObject.GetComponent <Henge>();
     playerHealth   = FindObjectOfType <PlayerHealth>();
 }
Пример #4
0
 // Use this for initialization
 void Start()
 {
     henge = GameObject.Find("Henge").GetComponent <Henge>();
     if (henge == null)
     {
         Debug.LogError("Couldn't find the Henge for " + gameObject);
     }
 }
Пример #5
0
    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);
            }
        }
    }