public void NotifyLeakExited(RocketLeak leak) { if (m_currentLeak == leak) { leak.DeactivateHighlight(); m_currentLeak = null; } else { m_otherLeaksInRange.Remove(leak); } }
public void AddLeak(Vector3 position, GameObject rocketHolePrefab, Transform parent, float size) { GameObject go = (GameObject)GameObject.Instantiate(rocketHolePrefab, position, Quaternion.identity); //go.transform.SetPositionAndRotation(position, correctRotation); RocketLeak rocketLeak = go.GetComponent <RocketLeak>(); rocketLeak.size = 1.0f; go.transform.SetParent(parent, true); //go.transform.LookAt(new Vector3(0, 0, position.z)); //Quaternion.LookRotation() go.transform.rotation = Quaternion.LookRotation(position - new Vector3(0, 0, position.z), Vector3.forward); //RocketHole hole = new RocketHole(1.0f, position, go); rocketLeaks.Add(rocketLeak); }
private void FixCurrentLeak() { m_currentLeak.DeactivateHighlight(); Vector3 position = m_currentLeak.transform.position; RaycastHit raycastHit; if (Physics.Raycast(m_currentLeak.transform.position, Vector3.down, out raycastHit, 5000, m_StandardOnlyLayerMask)) { position = raycastHit.point; } else { Debug.Log("Raycast failed: Inaccurate position for Patch"); } GameObject patch = (GameObject)Instantiate(RocketPatchPrefab, transform.position, new Quaternion()); patch.transform.localScale = new Vector3(.3f, .3f, .3f); patch.transform.SetParent(WorldRootToRotate.transform); levelManager.currentRocketStatus.rocketLeaks.Remove(m_currentLeak); Destroy(m_currentLeak.gameObject); m_currentLeak = null; m_timeWorkedOnThisLeak = 0.0f; foreach (RocketLeak leak in m_otherLeaksInRange) { if (m_currentLeak == null) { m_currentLeak = leak; } else { if (Vector3.Distance(this.transform.position, leak.transform.position) < Vector3.Distance(this.transform.position, m_currentLeak.transform.position)) { m_currentLeak = leak; } } } if (m_currentLeak != null) { m_currentLeak.ActivateHighlight(); } }
//When the Primitive collides with the walls, it will reverse direction public void NotifyLeakInRegion(RocketLeak leak) { if (m_currentLeak == null) { m_currentLeak = leak; m_currentLeak.ActivateHighlight(); } else { //we switch the nearest Leak if it if (Vector3.Distance(this.transform.position, leak.transform.position) < Vector3.Distance(this.transform.position, m_currentLeak.transform.position)) { m_otherLeaksInRange.Add(m_currentLeak); m_currentLeak = leak; m_currentLeak.ActivateHighlight(); } else { //Debug.Log("An additional leak git picked up."); m_otherLeaksInRange.Add(leak); } } }