// Function to add planet to game world private void SpawnPlanet(GameObject asteroid, SO_Planet data, Vector3 position) { // Check gameobject is not null if (asteroid) { GameObject toSpawn = Instantiate(asteroid, position, new Quaternion(), this.transform); toSpawn.GetComponent <S_Astroid>().SendData(data); } }
public bool SpawnLevel(SO_Planet starterPlanet, List <SO_Planet> planets, List <SO_Planet> joiningPlanets, int numberOfPlanets) { SpawnedPlanets = new List <SpawnedPlanet>(); SpawnedJoiningPlanets = new List <SpawnedPlanet>(); // Instantiate Starter Planet SpawnStarterPlanet(starterPlanet); for (int i = 0; i < numberOfPlanets; i++) { bool spawned = false; while (!spawned) { // Select Random planets int rSpawnPlanet = Random.Range(0, SpawnedPlanets.Count); int rJoiningPlanet = Random.Range(0, joiningPlanets.Count); int rPlanet = Random.Range(0, planets.Count); rPlanet = i < planets.Count ? i : rPlanet; // Get Planet Data SO_Planet joiningData = joiningPlanets[rJoiningPlanet]; SO_Planet planetData = planets[rPlanet]; // Create random vector for joining planet Vector3 joiningOrigin = RandomSpawnPoint(SpawnedPlanets[rSpawnPlanet], joiningData.size, true); // Check if it is a spawnable vector if (IsSpawnable(joiningOrigin, joiningData.size)) { SpawnedPlanet joiningPlanet = new SpawnedPlanet(joiningOrigin, joiningData.size); // Repeat for the spawning planet Vector3 planetOrigin = RandomSpawnPoint(joiningPlanet, planetData.size, false); if (IsSpawnable(planetOrigin, planetData.size)) { SpawnedPlanet planet = new SpawnedPlanet(planetOrigin, planetData.size); // Spawn Planets SpawnPlanet(m_Astroid, joiningData, joiningOrigin); SpawnPlanet(m_Astroid, planetData, planetOrigin); SpawnedJoiningPlanets.Add(joiningPlanet); SpawnedPlanets.Add(planet); // End Loop spawned = true; } } } } return(true); }
// Method that builds starter planet private void SpawnStarterPlanet(SO_Planet starterPlanet) { SpawnPlanet(m_AsteroidStarter, starterPlanet, new Vector3(0, 0, 0)); SpawnedPlanets.Add(new SpawnedPlanet(new Vector3(0, 0, 0), starterPlanet.size)); }
public void SendData(SO_Planet LevelDataPass) { LevelData = LevelDataPass; this.transform.localScale = new Vector3(LevelData.size, LevelData.size, LevelData.size); meshRend.material = LevelData.material; }