Ejemplo n.º 1
0
 public void NotifyLeakExited(RocketLeak leak)
 {
     if (m_currentLeak == leak)
     {
         leak.DeactivateHighlight();
         m_currentLeak = null;
     }
     else
     {
         m_otherLeaksInRange.Remove(leak);
     }
 }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
    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();
        }
    }
Ejemplo n.º 4
0
 //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);
         }
     }
 }