Exemplo n.º 1
0
 void OnTriggerEnter(Collider other)
 {
     if (other.GetComponent <Rigidbody> () &&
         CameraExtensions.CameraForObject(other.gameObject) != mainCamera &&
         (ignoreRigidbodyTag == "" || !other.gameObject.CompareTag(ignoreRigidbodyTag)))
     {
         RigidbodyCollider collider = new RigidbodyCollider();
         collider.collider          = other;
         collider.triggerZDirection = (transform.InverseTransformPoint(other.transform.position).z > 0);
         colliders.Add(collider);
     }
 }
Exemplo n.º 2
0
    void OnTriggerExit(Collider other)
    {
        RigidbodyCollider curCollider = null;

        foreach (RigidbodyCollider col in colliders)
        {
            if (col.collider == other)
            {
                curCollider = col;
                break;
            }
        }
        if (curCollider != null)
        {
            colliders.Remove(curCollider);
            if (colliders.Count == 0 && !isDeforming)
            {
                meshDeformer.ClearDeformingForce();
            }
        }
    }
Exemplo n.º 3
0
    /* Objects with colliders */
    void OnTriggerStay(Collider other)
    {
        RigidbodyCollider curCollider = null;

        foreach (RigidbodyCollider col in colliders)
        {
            if (col.collider == other)
            {
                curCollider = col;
                break;
            }
        }

        if (curCollider != null)
        {
            Vector3 convertedPoint = transform.InverseTransformPoint(other.transform.position);
            if ((convertedPoint.z > 0) != curCollider.triggerZDirection)
            {
                if (other.gameObject.layer == FromDimension().layer)
                {
                    DimensionChanger.SwitchDimensions(other.gameObject, FromDimension(), ToDimension());
                }
                else
                {
                    DimensionChanger.SwitchDimensions(other.gameObject, ToDimension(), FromDimension());
                }
            }

            if (!isDeforming)               // don't deform if we are right up against it
            {
                Vector3 transformPosition = other.transform.position;
                if (Mathf.Abs(convertedPoint.z) < maximumDeformRange)
                {
                    convertedPoint.z += triggerZDirection ? maximumDeformRange : -maximumDeformRange;
                    transformPosition = transform.TransformPoint(convertedPoint);
                }
                meshDeformer.AddDeformingForce(transformPosition, deformPower);
            }
        }
    }