Ejemplo n.º 1
0
    private IEnumerator PlayScene()
    {
        Player.Camera.enabled = false;

        yield return(null);

        yield return(null);

        yield return(null);

        MedicinePreparationScene m = (MedicinePreparationScene)G.Instance.Scene;

        m.Restarted = true;
        m.PlayFirstRoom(MedicinePreparationScene.AutoPlayStrength.WorkspaceRoom);
        while (m.IsAutoPlaying)
        {
            yield return(null);
        }

        Player.Camera.enabled = true;
        if (ScoreState != null)
        {
            G.Instance.Progress.SetProgress(ScoreState);
        }
        Destroy(gameObject);
    }
    /// <summary>
    /// Teleports player and Contents of Pass-Through cabinet to the next room.
    /// </summary>
    public void TeleportPlayerAndPassthroughCabinet()
    {
        if (playerDst == null || passthroughDst == null)
        {
            Logger.Print("Cannot teleport without references to teleportation spots!");
            return;
        }

        CabinetBase      cabinet = passthroughSrc.GetComponent <CabinetBase>();
        List <Transform> items   = cabinet.GetContainedItems().ConvertAll(obj => obj.transform);

        foreach (Transform item in items)
        {
            float rotDelta = Quaternion.Angle(passthroughSrc.rotation, passthroughDst.rotation);
            item.position = passthroughDst.position + (item.position - passthroughSrc.position);
            item.RotateAround(passthroughDst.position, passthroughDst.up, rotDelta);
            CreateSpawner(item);
        }

        foreach (VRHandControls h in VRInput.Hands)
        {
            h.Hand.GrabUninteract();
            h.Hand.Uninteract();
        }

        player.position = playerDst.position;

        MedicinePreparationScene m = G.Instance.Scene as MedicinePreparationScene;

        if (!m.Restarted || MedicinePreparationScene.SavedScoreState == null)
        {
            m.SaveProgress();
        }
    }