Example #1
0
    void Start()
    {
        FindDataContainer();
        firstPersonCamera = container.FirstPersonCamera;
        spawnRoom         = GetComponent <SpawnRoom>();

        if (Session.Status == SessionStatus.ErrorPermissionNotGranted)
        {
            StartCoroutine(CodelabUtils.ToastAndExit(
                               "Camera permission is needed to run this application.", 5));
        }
        else if (Session.Status.IsError())
        {
            StartCoroutine(CodelabUtils.ToastAndExit(
                               "ARCore encountered a problem connecting. Please restart the app.", 5));
        }
    }
Example #2
0
 void Start()
 {
     rooms = GameObject.FindWithTag("Rooms").GetComponent <SpawnRoom>();
 }
Example #3
0
    private IEnumerator StartGeneration()
    {
        yield return(null);

        DDebugTimer.Start();
        stopwatch.Start();
        generationComplete = false;

        rooms = new List <Room>();
        doors = new List <Door>();

        int        spawn = random.range(0, data.sets[dungeonSet].spawns.Count - 1);
        GameObject room  = (GameObject)Instantiate(data.sets[dungeonSet].spawns[spawn].gameObject);

        startRoom = room;
        rooms.Add(room.GetComponent <Room>());
        room.transform.parent        = this.gameObject.transform;
        room.transform.localPosition = Vector3.zero;
        openSet.Add(room.GetComponent <EL.Dungeon.Room>());
        room.GetComponent <Volume>().RecalculateBounds();
        AddGlobalVoxels(room.GetComponent <Volume>().voxels);
        roomsCount++;

        while (openSet.Count > 0 && (!generateWithTimer || stopwatch.ElapsedMilliseconds < MaxGenerationTime))
        {
            stopwatch.Reset();

            GenerateNextRoom();
            if (UseEnumaration)
            {
                yield return(new WaitForSeconds(GenerationDelay));
            }

            stopwatch.Start();
        }

        //TODO: Do a pass on all rooms to try to replace dead ends with room that connect them

        //Init the player/walker
        SpawnRoom  spawnRoom  = startRoom.GetComponent <SpawnRoom>();
        GameObject walker     = Instantiate(WalkerPrefab, spawnRoom.SpawnPosition.position, spawnRoom.SpawnPosition.rotation);
        var        controller = walker.GetComponent <TwitchPlayerController>();

        controller.TargetDoor = spawnRoom.doors[0];

        //process doors
        for (int i = 0; i < rooms.Count; i++)
        {
            for (int j = 0; j < rooms[i].doors.Count; j++)
            {
                if (rooms[i].doors[j].door == null && rooms[i].doors[j].sharedDoor != null)
                {
                    Door d = ((GameObject)Instantiate(data.sets[dungeonSet].doors[0].gameObject)).GetComponent <Door>();
                    doors.Add(d);
                    rooms[i].doors[j].door            = d;
                    rooms[i].doors[j].sharedDoor.door = d;
                    //
                    d.gameObject.transform.position = rooms[i].doors[j].transform.position;
                    d.gameObject.transform.rotation = rooms[i].doors[j].transform.rotation;
                    d.gameObject.transform.parent   = this.gameObject.transform;
                }
            }
        }
        //locked doors and keys, etc come next.

        generationComplete = true;
        Debug.Log("DungeonGenerator::Generation completed : " + DDebugTimer.Lap() + "ms");
    }
 private void Start()
 {
     rooms = GameObject.FindWithTag("Rooms").GetComponent <SpawnRoom>();
     name  = this.transform.parent.name;
     words = name.Split(' ');
 }