Ejemplo n.º 1
0
    public void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            int?seedToUse = useSeed ? (int?)seed : null;

            GalaxyGeneration galGen = new GalaxyGeneration(galaxyRenderer.material, seed: seedToUse, galaxySize: galaxyResolution, starCount: numberOfStars, numberOfArms: numberOfArms, rotationFactor: swirlAmount, colorGradient: starColorGradient);

            galGen.Generate();
        }
    }
Ejemplo n.º 2
0
    public void GenerateGalaxy(GameData gameData)
    {
        //string _seedS = .ToString ();
        //inputField.text = _seedS;
        //	ssg.GenereateSystemFromStringSeed (_seedS);

        //Random.InitState (Random.Range (0, 1000));
        seed       = gameData.seed;
        galaxyType = gameData.galaxyType;

        Random.InitState(seed);
        //Random.InitState (17);
        //Random.InitState (677);

        //int numberOfSystems = 250;

        //starSystem = new StarSystem[numberOfSystems];
        //systemSeed = new int[numberOfSystems];
        systemPoint = new SystemPointNode[gameData.numberOfSystems];

        for (int i = 0; i < gameData.numberOfSystems; i++)
        {
            //starSystem [i] = new StarSystem ( Random.Range (0, 99999));
            //starSystem [i].seed = Random.Range (0, 99999);
            systemPoint[i] = new SystemPointNode();
            systemPoint [i].numberOfJumpsAway = 0;
        }

        GalaxyGeneration.CreateGalaxy(out starSystem, gameData.numberOfSystems).transform.parent = transform;

        if (gameData.savedGame)
        {
            for (int i = 0; i < gameData.numberOfSystems; i++)
            {
                for (int j = 0; j < starSystem [i].anomaliEventCompleted.Length; j++)
                {
                    starSystem [i].anomaliEventCompleted [j] = gameData.anomaliCompleted [i, j];
                }
            }
        }

        float diskRadius = 250;
        float holeRadius = 150;

        if (gameData.numberOfSystems == 50)
        {
            diskRadius = 100;
            holeRadius = 25;
        }
        else if (gameData.numberOfSystems == 125)
        {
            diskRadius = 200;
            holeRadius = 75;
        }
        else if (gameData.numberOfSystems == 250)
        {
            diskRadius = 250;
            holeRadius = 150;
        }
        else if (gameData.numberOfSystems == 500)
        {
            diskRadius = 400;
            holeRadius = 200;
        }



        foreach (Transform child in transform.GetChild(0).transform)
        {
            switch (galaxyType)
            {
            case GalaxyType.Elliptical:
                child.position = SetSystemPointPosition(diskRadius);
                break;

            case GalaxyType.ring:
                child.position = SetDonutSystemPointPosition(Vector3.zero, diskRadius, holeRadius);
                break;

            case GalaxyType.spiral:

                break;
//
//			default:
//				child.position = SetDonutSystemPointPosition (Vector3.zero, 250, 150);
//				break;
            }
        }



        for (int s = 0; s < systemPoint.Length; s++)
        {
            systemPoint [s].SetPosition(transform.GetChild(0).GetChild(s).position);
        }

        systemPoint [0].SetConectedToZero(true);

        //		for (int s = 0; s < systemPoint.Length; s++) {
        //
        //			FindConnections (s);
        //
        //		}
        for (int s = 0; s < systemPoint.Length; s++)
        {
            //if (systemPoint [s].conectedToZero) {
            FindSecondaryConnections();
            //}
        }

        //		for (int s = 0; s < systemPoint.Length; s++) {
        //			//if (systemPoint [s].conectedToZero) {
        //			FindThirdConnections (s);
        //			//}
        //		}
        for (int s = 0; s < systemPoint.Length; s++)
        {
            ConnectSystems(s).transform.parent = transform.GetChild(0).GetChild(s);
        }



        GenerateSystem(starSystem [gameData.startingSystem], true);
        currentSystem = gameData.startingSystem;

        transform.GetChild(0).gameObject.SetActive(false);
        //currentSystemObject.transform.parent = transform.GetChild (0);
        //currentSystemObject.transform.position = systemPoint [gameData.startingSystem].position;
    }