Esempio n. 1
0
    void OnTriggerEnter(Collider collider)
    {
        // allowed target enters the trigger
        if (collider.tag.Equals("Mario"))
        {
            // get the target and its ITeleportable script
            target       = collider.transform;
            teleportable = (ITeleportable)target.GetComponent(typeof(ITeleportable));

            // checks if teleportable isn't valid
            if (teleportable == null)
            {
                target = null;
                return;
            }

            // set intial status
            teleportable.setOnTeleportPlace(true);
            teleportable.setDirEntrance(getDirEntrance());

            // if the player was teleporting then start the fade out transition
            if (teleportable.isTeleporting())
            {
                fader.startFading(EnumFadeDirection.FADE_OUT);
            }
        }
    }
Esempio n. 2
0
    private void OnTriggerEnter(Collider collider)
    {
        ITeleportable teleportable = collider.GetComponent <ITeleportable>();

        if (teleportable != null && OnEntered != null)
        {
            OnEntered(teleportable);
        }
    }
Esempio n. 3
0
    private IEnumerator ReenableTeleportation(ITeleportable teleportable)
    {
        var fixedUpdateWaiter = new WaitForFixedUpdate();

        yield return(fixedUpdateWaiter);        // during this physics update, the object entered and exited the first teleporter collider

        yield return(fixedUpdateWaiter);        // during this one, the object may have entered the teleporter collider of the opposing teleporter

        teleportable.CanBeTeleported = true;
    }
Esempio n. 4
0
    private bool Receive(ITeleportable teleportable)
    {
        if (teleportable == null)
        {
            return(false);
        }

        Debug.Log("Teleport::Receive>> Teleportable", this);

        teleportable.TeleportTo(this);
        return(true);
    }
Esempio n. 5
0
    protected override bool?OnCollision2(int pDamage, Player pOwner, GameObject pOrigin)
    {
        //if teleport collides with teleportable object, dont destroy it.
        //it will be handled in TeleportTo method of individual objects
        ITeleportable teleportableObject = pOrigin.GetComponent <ITeleportable>();

        if (teleportableObject != null)
        {
            return(false);
        }

        return(base.OnCollision2(pDamage, pOwner, pOrigin));
    }
Esempio n. 6
0
    private void OnTriggerEnter(Collider other)
    {
        ITeleportable teleportable = other.gameObject.GetComponent <ITeleportable>();

        if (teleportable != null)
        {
            teleportable.Teleport(connectedObjectPosition);
        }
        else
        {
            Debug.Log("No ITeleportable!");
        }
    }
Esempio n. 7
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        //Debug.Log("OnTriggerEnter2D " + collision.gameObject.name);
        ITeleportable teleportableObject = collision.GetComponent <ITeleportable>();

        if (teleportableObject != null)
        {
            if (teleportedObjects.Contains(teleportableObject))
            {
                //Debug.Log("This object was teleported here recently");
                return;
            }

            ITeleportable teleportedObject = teleportableObject.TeleportTo(linkedTeleport);
            if (teleportedObject != null)
            {
                linkedTeleport.OnTeleported(teleportedObject);
            }
        }
    }
Esempio n. 8
0
    private void Update()
    {
        for (int i = 0; i < teleportableObjectsNearby.Count; i++)
        {
            ITeleportable teleportable = teleportableObjectsNearby[i];

            float distance = teleportable.GetDistance(m_Transform.position);

            if (connectedPortals.Count > 0 && distance < teleportDistance)
            {
                connectedPortals[Random.Range(0, connectedPortals.Count)].Teleport(teleportable);
            }
            else
            {
                float scale = (distance - teleportDistance) / shrinkingDistance;

                teleportable.UpdateScale(scale);
            }
        }
    }
Esempio n. 9
0
 //List<GameObject> teleportedObjects = new List<GameObject>();
 private void OnTeleported(ITeleportable pObject)
 {
     teleportedObjects.Add(pObject);
     DoInTime(() => teleportedObjects.Remove(pObject), 1);
 }
Esempio n. 10
0
    private void OnTriggerExited(ITeleportable teleportable)
    {
        teleportable.UpdateScale(1f);

        teleportableObjectsNearby.Remove(teleportable);
    }
Esempio n. 11
0
 private void OnTriggerEntered(ITeleportable teleportable)
 {
     teleportableObjectsNearby.Add(teleportable);
 }
Esempio n. 12
0
 public void Teleport(ITeleportable teleportable)
 {
     teleportable.MoveTo(releaseTransform);
 }