private void Update() { // Add Player To GameMaster if (!gameMasterActive && gameMaster != null) { playerNumber = gameMaster.AddPlayer(gameObject); gameMasterActive = true; } // Health / Set Alive if (playing && isKaiju && (kaijuHealth > 0f) != kaijuController.isAlive) { kaijuController.isAlive = kaijuHealth > 0f; if (playing && kaijuCore.dying != (kaijuHealth <= 0f)) { kaijuCore.dying = kaijuHealth <= 0f; } } if (playing && !isKaiju && (shipHealth > 0f) != shipController.isAlive) { shipController.isAlive = shipHealth > 0f; if (playing && shipCore.dying != (shipHealth <= 0f)) { shipCore.dying = shipHealth <= 0f; } } // Set Active Weapon if (playing && shipWeapon == Weapons.RAILGUN && (!shipWeapons[0].activeSelf || shipWeapons[1].activeSelf || shipWeapons[2].activeSelf)) { shipWeapons[0].SetActive(true); shipWeapons[1].SetActive(false); shipWeapons[2].SetActive(false); } if (playing && shipWeapon == Weapons.LASER && (shipWeapons[0].activeSelf || !shipWeapons[1].activeSelf || shipWeapons[2].activeSelf)) { shipWeapons[0].SetActive(false); shipWeapons[1].SetActive(true); shipWeapons[2].SetActive(false); } if (playing && shipWeapon == Weapons.MINIGUN && (shipWeapons[0].activeSelf || shipWeapons[1].activeSelf || !shipWeapons[2].activeSelf)) { shipWeapons[0].SetActive(false); shipWeapons[1].SetActive(false); shipWeapons[2].SetActive(true); } if (!playing && (shipWeapons[0].activeSelf || shipWeapons[1].activeSelf || shipWeapons[2].activeSelf)) { shipWeapons[0].SetActive(false); shipWeapons[1].SetActive(false); shipWeapons[2].SetActive(false); } // Set Kaiju/Ship if (playing && isKaiju && !playerObjects[0].activeSelf) { playerObjects[0].SetActive(true); playerObjects[1].SetActive(false); globalGameObjects["kaiju_track_point"] = playerObjects[0].transform.Find("KaijuTrackPoint").gameObject; } if (playing && !isKaiju && !playerObjects[1].activeSelf) { playerObjects[0].SetActive(false); playerObjects[1].SetActive(true); } if (!playing && (playerObjects[0].activeSelf || playerObjects[1].activeSelf)) { playerObjects[0].SetActive(false); playerObjects[1].SetActive(false); } // Set Local Camera if (playing && isLocalPlayer && ((isKaiju && (!playerCameras[0].activeSelf || playerCameras[1].activeSelf)) || (!isKaiju && (playerCameras[0].activeSelf || !playerCameras[1].activeSelf)))) { playerCameras[0].SetActive(isKaiju); playerCameras[1].SetActive(!isKaiju); startingCamera.SetActive(false); if (isKaiju) { ocean.GetComponent <OceanRenderer>().Viewpoint = playerCameras[0].transform; } else { ocean.GetComponent <OceanRenderer>().Viewpoint = playerCameras[1].transform; } /* * //setting cache here * if (globalGameObjects.TryGetValue("ocean", out gameObjectCache)) * { * if (isKaiju) * { * gameObjectCache.GetComponent<OceanRenderer>().Viewpoint = playerCameras[0].transform; * } * else * { * gameObjectCache.GetComponent<OceanRenderer>().Viewpoint = playerCameras[1].transform; * } * } * else Debug.LogError("Could not find the ocean"); * * //setting cache here * if (globalGameObjects.TryGetValue("starting_camera", out gameObjectCache) && gameObjectCache.activeSelf) * { * gameObjectCache.SetActive(false); * //hasStarted = true; * } * else// if(!hasStarted) * { * Debug.LogError("Could not find starting camera"); * }*/ } else if ((!playing || !isLocalPlayer) && (playerCameras[0].activeSelf || playerCameras[1].activeSelf)) { playerCameras[0].SetActive(false); playerCameras[1].SetActive(false); } // Send/Receive Player Info if (playing && isKaiju && kaijuController.isLocal != isLocalPlayer) { kaijuController.isLocal = isLocalPlayer; } if (playing && !isKaiju && shipController.isLocal != isLocalPlayer) { shipController.isLocal = isLocalPlayer; } updateTime += Time.deltaTime; if (playing && updateTime > 0.2f) { updateTime = 0f; int k = 0; if (!isKaiju) { k = 1; } if (isLocalPlayer) { CmdUpdatePlayer( playerObjects[k].transform.position, kaijuCore.GetDesiredRotation(), kaijuCore.GetRotation(), kaijuCore.GetDesiredMovement(), kaijuCore.GetMovement(), kaijuCore.GetSubmerged(), shipCore.GetRudder(), shipCore.GetActualRudder(), shipCore.GetRotation(), shipCore.GetThrottle(), shipCore.GetSpeed(), shipTurret.GetAimPoint(), shipTurret.GetTargetVelocity() ); } else { playerObjects[k].transform.position = playerPosition; kaijuCore.SetDesiredRotation(playerDesiredRotation); kaijuCore.HardSetRotation(playerKaijuRotation); kaijuCore.SetDesiredMovement(playerDesiredMovement); kaijuCore.HardSetMovement(playerKaijuMovement); kaijuCore.HardSetSubmerged(playerSubmerged); shipCore.SetRudder(playerRudder); shipCore.HardSetRudder(playerActualRudder); shipCore.HardSetRotation(playerShipRotation); shipCore.SetThrottle(playerThrottle); shipCore.HardSetSpeed(playerShipSpeed); shipTurret.UpdateAim(playerAimPoint, playerTargetVelocity); if (playerSlashCount > slashCount) { slashCount = playerSlashCount; kaijuCore.HardTriggerSlash(); } if (playerShotsFired > shotsFired) { shotsFired = playerShotsFired; shipTurret.HardFireCannon(lastShotMask, lastShotPosition, lastShotRotation, lastShotVelocity); } } } //UI control if (isLocalPlayer) { if (isKaiju) { healthUI.text = "Health: " + kaijuHealth; kaijuTracker.SetActive(false); } else { kaijuTracker.SetActive(true); healthUI.text = "Health: " + shipHealth; //setting cache here if (globalGameObjects.TryGetValue("kaiju_track_point", out gameObjectCache)) { if (!kaijuTracker.active && !kaijuCore.IsSubmerged()) { kaijuTracker.SetActive(true); } if (kaijuCore.IsSubmerged()) { Debug.Log("submerged"); kaijuTracker.SetActive(false); } var vect = playerCameras[1].GetComponent <Camera>().WorldToScreenPoint(gameObjectCache.transform.position); var z = vect.z; vect.z = 0; kaijuTracker.transform.position = vect; var r = kaijuTracker.GetComponent <RectTransform>(); var distance = Vector3.Distance(gameObjectCache.transform.position, playerCameras[1].transform.position); r.sizeDelta = new Vector2(1000, 1000) * (1 / distance * 100 * (float)goldenRatio); if (Mathf.Sign(z) < 0) { //maybe have an onscreen indicator to show which way to turn kaijuTracker.GetComponent <Image>().enabled = false; } else { kaijuTracker.GetComponent <Image>().enabled = true; } } } } /*if (transform.Find("Kaiju").Find("Kaiju Pivot").gameObject.activeSelf != (kaijuHealth > 0f && isKaiju)) * { * transform.Find("Kaiju").Find("Kaiju Pivot").gameObject.SetActive(kaijuHealth > 0f && isKaiju); * } * if (transform.Find("Ship").Find("Ship Pivot").gameObject.activeSelf != (shipHealth > 0f && !isKaiju)) * { * transform.Find("Ship").Find("Ship Pivot").gameObject.SetActive(kaijuHealth > 0f && !isKaiju); * }*/ }