void IgnoreCollisionWithCollider(Collider other, bool partOfDimensionObject)
    {
        if (collidersIgnored.ContainsKey(other))
        {
            collidersIgnored[other] = collidersIgnored[other] || partOfDimensionObject;
            return;
        }

        foreach (var thisCollider in dimensionObject.colliders)
        {
            SuperspectivePhysics.IgnoreCollision(thisCollider, other);
        }
        collidersIgnored.Add(other, partOfDimensionObject);
    }
    void RestoreCollisionWithCollider(Collider other)
    {
        if (!collidersIgnored.ContainsKey(other))
        {
            return;
        }

        // Sometimes the object we were ignoring collisions with gets destroyed and thus we need a null check
        if (other != null)
        {
            foreach (var thisCollider in dimensionObject.colliders)
            {
                SuperspectivePhysics.RestoreCollision(thisCollider, other);
            }
        }

        collidersIgnored.Remove(other);
    }
Beispiel #3
0
    IEnumerator Start()
    {
        debug = new DebugLogger(gameObject, () => DEBUG);

        originalPortalableObj = original.GetComponent <PortalableObject>();

        // Disallow collisions between a portal object and its copy
        foreach (var c1 in colliders)
        {
            foreach (var c2 in originalPortalableObj.colliders)
            {
                SuperspectivePhysics.IgnoreCollision(c1, c2);
            }
        }

        InteractableObject maybeInteract = original.GetComponent <InteractableObject>();

        maybeOriginalGlow = original.GetComponent <InteractableGlow>();

        if (maybeInteract != null)
        {
            InteractableObject interact = gameObject.AddComponent <InteractableObject>();
            interact.glowColor         = maybeInteract.glowColor;
            interact.overrideGlowColor = maybeInteract.overrideGlowColor;

            interact.OnLeftMouseButton     += maybeInteract.OnLeftMouseButton;
            interact.OnLeftMouseButtonDown += maybeInteract.OnLeftMouseButtonDown;
            interact.OnLeftMouseButtonUp   += maybeInteract.OnLeftMouseButtonUp;

            interact.OnMouseHover      += maybeInteract.OnMouseHover;
            interact.OnMouseHoverEnter += maybeInteract.OnMouseHoverEnter;
            interact.OnMouseHoverExit  += maybeInteract.OnMouseHoverExit;
        }

        TransformCopy();

        yield return(null);

        glow = GetComponent <InteractableGlow>();
    }