public void BroadcastEvents() { if (m_FireEvent) { m_FireEvent = false; var objectsInRadius = Physics.OverlapSphere(transform.position, m_NoiseRadius, ~(LayerMask.NameToLayer("Players"))); for (int i = 0; i < objectsInRadius.Length; ++i) { var percepts = objectsInRadius[i].GetComponent <TankPercepts>(); if (objectsInRadius[i].gameObject != gameObject && percepts != null) { TankTacticalInfo targetRecord = percepts.GetRecord(m_PlayerNumber); // write updated information targetRecord.lastKnownPosition = transform.position; targetRecord.lastKnownDirection = (transform.position - percepts.transform.position).normalized; targetRecord.lastKnownCannonForward = m_FireTransform.parent.transform.forward; // HACK: find a better way to expose the cannon percepts.WriteRecord(targetRecord); } } } }
private void BroadcastEvents() { var objectsInRange = Physics.OverlapSphere(transform.position, m_NoiseRadius, ~(LayerMask.NameToLayer("Players"))); for (int i = 0; i < objectsInRange.Length; ++i) { var receptor = objectsInRange[i].GetComponent <TankPercepts>(); if (receptor != null && receptor.gameObject != gameObject) { TankTacticalInfo targetRecord = receptor.GetRecord(m_PlayerNumber); // write updated information targetRecord.lastKnownDirection = (transform.position - receptor.transform.position).normalized; receptor.WriteRecord(targetRecord); } } }
public TankTacticalInfo GetRecord(int playerID) { TankTacticalInfo record; // get the existing record, if any, otherwise create a new one if (reconInfo.ContainsKey(playerID)) { record = reconInfo[playerID]; } else { record = new TankTacticalInfo(); record.playerID = playerID; reconInfo[playerID] = record; } return(record); }
public TankTacticalInfo GetRecord(int playerID) { TankTacticalInfo record; // get the existing record, if any, otherwise create a new one if (reconInfo.ContainsKey(playerID)) { record = reconInfo[playerID]; } else { record = new TankTacticalInfo(); record.playerID = playerID; reconInfo[playerID] = record; } return record; }
private void OnDeath() { // Set the flag so that this function is only called once. m_Dead = true; var objectsInRange = Physics.OverlapSphere(transform.position, m_DeathAlertRadius, ~(LayerMask.NameToLayer("Players"))); for (int i = 0; i < objectsInRange.Length; ++i) { var receptor = objectsInRange[i].GetComponent <TankPercepts>(); if (receptor != null && receptor.gameObject != gameObject) { TankTacticalInfo targetRecord = receptor.GetRecord(m_PlayerNumber); // write updated information targetRecord.lastKnownPosition = transform.position; targetRecord.lastKnownDirection = (transform.position - receptor.transform.position).normalized; targetRecord.isAlive = 0; receptor.WriteRecord(targetRecord); } } // Move the instantiated explosion prefab to the tank's position and turn it on. m_ExplosionParticles.transform.position = transform.position; m_ExplosionParticles.gameObject.SetActive(true); // Play the particle system of the tank exploding. m_ExplosionParticles.Play(); // Play the tank explosion sound effect. m_ExplosionAudio.Play(); // Turn the tank off. gameObject.SetActive(false); }
public void BroadcastEvents() { if (m_FireEvent) { m_FireEvent = false; var objectsInRadius = Physics.OverlapSphere(transform.position, m_NoiseRadius, ~(LayerMask.NameToLayer("Players"))); for (int i = 0; i < objectsInRadius.Length; ++i) { var percepts = objectsInRadius[i].GetComponent <TankPercepts>(); if (objectsInRadius[i].gameObject != gameObject && percepts != null) { TankTacticalInfo targetRecord = percepts.GetRecord(m_PlayerNumber); // write updated information targetRecord.lastKnownPosition = transform.position; percepts.WriteRecord(targetRecord); } } } }
public void WriteRecord(TankTacticalInfo tacticalData) { reconInfo[tacticalData.playerID] = tacticalData; }