Exemplo n.º 1
0
    private void OnTriggerExit(Collider other)
    {
        //if (m_penCork && (other.gameObject == m_penCork.gameObject))
        //{
        //    StopCoroutine(PutCorkCoroutine());

        //    m_penCork.transform.SetParent(null);
        //    m_penCork.rigidbody.isKinematic = false;
        //    m_penCork.rigidbody.useGravity = true;
        //    m_penCork.GetComponent<Collider>().isTrigger = false;

        //    m_penCork = null;
        //}

        if (!m_corkPosition)
        {
            return;
        }

        ViveCork viveCork = other.GetComponent <ViveCork>();

        if (viveCork)
        {
            if (!viveCork.picked)
            {
                viveCork.Release();
            }
            else
            {
                viveCork.CancelAttach();
            }
            m_hasCork = false;
            //PlayPopSound(m_openingSound);
        }
    }
Exemplo n.º 2
0
    private void OnTriggerEnter(Collider other)
    {
        //if (m_penCork)
        //{
        //    return;
        //}

        //VivePickable penCork = other.GetComponent<VivePickable>();

        //if (penCork && (penCork.itemType == XperItem.PenCork))
        //{
        //    m_penCork = penCork;
        //    StartCoroutine(PutCorkCoroutine());
        //}

        if (!m_corkPosition)
        {
            return;
        }

        ViveCork viveCork = other.GetComponent <ViveCork>();

        if (viveCork && !m_hasCork)
        {
            viveCork.AttachTo(transform, m_corkPosition.localPosition);
            m_hasCork = true;
            //PlayPopSound(m_openingSound);
        }
    }
Exemplo n.º 3
0
    private void OnTriggerEnter(Collider other)
    {
        if (!m_corkPosition)
        {
            return;
        }

        ViveCork viveCork = other.GetComponent <ViveCork>();

        if (viveCork && !hasCork)
        {
            viveCork.AttachTo(m_fluwidManager.transform, m_corkPosition.localPosition + transform.localPosition);
            m_fluwidManager.flowBlocked = true;
            m_viveCork = viveCork;
            PlayPopSound(m_openingSound);
        }
    }
Exemplo n.º 4
0
    private void OnCollisionEnter(Collision other)
    {
        if ((other.collider.isTrigger) || (other.collider.gameObject.name == "VitreHotte"))
        {
            return;
        }

        ViveCork otherCork = other.gameObject.GetComponent <ViveCork>();

        if (otherCork)
        {
            return;
        }
        VivePickable otherPickable = other.gameObject.GetComponent <VivePickable>();

        float collisionForce = other.relativeVelocity.magnitude * other.relativeVelocity.magnitude;

        if (other.rigidbody)
        {
            collisionForce *= other.rigidbody.mass;
        }
        else
        {
            collisionForce *= m_rigidbody.mass;
        }
        bool conditionsToExplode = (collisionForce >= 3) && !(m_pickable && m_pickable.picked) && !(otherPickable && otherPickable.picked);

        if (conditionsToExplode)
        {
            MakeGlassBreakSound();

            FailCondition failCondition = new FailCondition(FailCondition.FailType.BrokenGlass);
            failCondition.failed          = true;
            failCondition.failurePosition = transform.position;
            Watcher.ProvokeFail(failCondition, gameObject);

            Debug.Log("ColliXion avec " + other.collider.name + "(Force : " + Mathf.Round(collisionForce * 10) / 10 + " )");
            Explode(other.contacts[0].point);
        }
        else
        {
            MakeGlassShockSound(other.contacts[0].point, other.relativeVelocity.magnitude);
        }
    }
Exemplo n.º 5
0
    protected override void OnActionUp()
    {
        if (picked)
        {
            Release();
        }
        else
        {
            ViveCork cork = GetComponent <ViveCork>();

            if (cork && cork.transform.parent && cork.transform.parent.parent)
            {
                VivePickable corkParent = cork.transform.parent.parent.GetComponent <VivePickable>();
                if (corkParent && corkParent.picked)
                {
                    corkParent.Release();
                }
            }
        }
    }
Exemplo n.º 6
0
    private void OnTriggerExit(Collider other)
    {
        if (!m_corkPosition)
        {
            return;
        }

        ViveCork viveCork = other.GetComponent <ViveCork>();

        if (viveCork && hasCork)
        {
            if (!viveCork.picked)
            {
                viveCork.Release();
            }
            else
            {
                viveCork.CancelAttach();
            }
            m_fluwidManager.flowBlocked = false;
            m_viveCork = null;
            PlayPopSound(m_closingSound);
        }
    }