예제 #1
0
    public static LocalWorldGenerator Create()
    {
        if (worldGenerators == null)
        {
            LoadGenerators();
        }

        //UnityEngine.Random.InitState(seed);
        LocalWorldGenerator newLWG = Instantiate <LocalWorldGenerator>(worldGenerators[UnityEngine.Random.Range(1, worldGenerators.Count) - 1]);

        newLWG.radius = UnityEngine.Random.Range(newLWG.localMinRadius, newLWG.localMaxRadius);
        //UnityEngine.Random.InitState(seed);
        Room firstRoom = null;

        newLWG.InitializeRoomList();
        List <Room> copyRooms = new List <Room>(newLWG.rooms);

        //int i = 1;
        while (firstRoom == null && copyRooms.Count > 0)
        {
            int index = UnityEngine.Random.Range(1, copyRooms.Count) - 1;
            //i++;
            if (copyRooms[index].canBeFirst)
            {
                firstRoom = copyRooms[index];
            }
            else
            {
                copyRooms.RemoveAt(index);
            }
        }
        if (firstRoom == null)
        {
            Debug.LogError("No suitable room for generation's start exists in this generator, duh !");
        }
        else
        {
            firstRoom.position           = Vector3.zero;
            firstRoom.distanceFromCenter = 0;

            newLWG.localWorld = new Dictionary <Vector3, Room>();
            newLWG.localWorld.Add(Vector3.zero, firstRoom);
            newLWG.GenerateCSP();
            newLWG.BacktrackingSearch();
        }
        return(newLWG);
    }
예제 #2
0
파일: LWG_Test.cs 프로젝트: Kyvi/8INF830
 // Use this for initialization
 void Start()
 {
     LocalWorldGenerator.Create((int)Random.value * 250000);
 }
예제 #3
0
 // Use this for initialization
 void Start()
 {
     LocalWorldGenerator.Create();
 }