public bool createSystem() { bool system_created = false; if(num_planets > 0 ){ //create the system! base.sub_spheres = new SphereRenderer[num_planets]; /*create the sun!*/ int ptype = 101; float pmass = 1000000f; string pname = name + " - Sun"; float pradius = 12f; float pdistance = 0f; Vector3 pposition = new Vector3(position.x, Random.Range(-400, 400), position.z); Debug.Log(pposition); Planet planet = new Planet(ptype, pmass, pname, pradius, pdistance, pposition); planet.createPlanet(); factory = (SphereRendererFactory)GameObject.Find("SphereRendererFactory").GetComponent("SphereRendererFactory"); base.sub_spheres[0] = factory.createSphereRenderer(); base.sub_spheres[0].initialize(0, 0, planet_threshold,1 , planet); base.sub_spheres[0].setIsDisplayed(true); /* end create sun */ pdistance += 15f; /*create planets*/ for(int i = 1; i < (num_planets); i++){ float omega = Random.Range(0, 2*Mathf.PI); /* sphere types * 0 - Dead * 1 - Fuel Source * 2 - Habitable * 3 - Sun * 4 - Planetary System * 5 - System Cluster */ ptype = Random.Range(0, 100); pmass = Random.Range(1000f, 10000f); pname = name + " - " + i; pradius = Random.Range(10f, 20f); pdistance = Random.Range(pdistance, pdistance + 100f); pposition = new Vector3(position.x + pdistance*Mathf.Cos(omega) , Random.Range(-100, 100), position.z + pdistance*Mathf.Sin(omega)); planet = new Planet(ptype, pmass, pname, pradius, pdistance, pposition); planet_threshold = pradius + 10f; if(!planet.createPlanet()){ system_created = false; break; } else{ factory = (SphereRendererFactory)GameObject.Find("SphereRendererFactory").GetComponent("SphereRendererFactory"); base.sub_spheres[i] = factory.createSphereRenderer(); base.sub_spheres[i].initialize(0, 0, planet_threshold,1 , planet); base.sub_spheres[i].setIsDisplayed(true); } system_created = true; } } return system_created; }
/*define other game constants here */ /* BUILD THE UNIVERSE */ void Start() { Random.seed = System.DateTime.Now.Millisecond; Debug.Log("Creating Universe..."); num_clusters = 10; num_systems = 2; cluster_threshold = 90f; radius = 500f; float cdistance = 10f; cluster_spheres = new SphereRenderer[num_clusters]; for(int i = 0; i < cluster_spheres.Length; ++i){ float omega = Random.Range(0, 2*Mathf.PI); //uncomment to implement cluster types and mass /*float cmass = Random.Range(1000f, 100000f); */ string cname = "Cluster: " + i; float cradius = Random.Range(70f, 80f); cdistance = Random.Range(cdistance, cdistance + 300); Vector3 cposition = new Vector3(cdistance*Mathf.Cos(omega), Random.Range(-100, 100), cdistance*Mathf.Sin(omega)); cdistance += cradius; /* float cdistance = 0; */ SystemCluster cluster = new SystemCluster(ctype, 0, cname, cradius, 0, cposition); cluster.setNumSystems(num_systems); if(!cluster.createCluster()){ universe_created = false; break; } else{ factory = (SphereRendererFactory)GameObject.Find("SphereRendererFactory").GetComponent("SphereRendererFactory"); cluster_spheres[i] = factory.createSphereRenderer(); cluster_spheres[i].initialize(0, 0, cluster_threshold,1, cluster); //cluster_spheres[i].setIsDisplayed(true); } universe_created = true; } if(universe_created) Debug.Log("Universe Created"); else Debug.Log("Universe Failed"); }
public bool createCluster() { bool cluster_created = false; if(num_systems > 0){ //create the cluster! float sdistance = 0f; base.sub_spheres = new SphereRenderer[num_systems]; for(int i = 0; i < num_systems; ++i){ float omega = Random.Range(0, 2*Mathf.PI); /*uncomment to implement system types and mass int stype = Random.Range(0, 2); float smass = Random.Range(1000f, 100000f); */ float sradius = Random.Range(500f, 800f); sdistance = Random.Range(sdistance, sdistance + 50); Vector3 sposition = new Vector3(position.x + sdistance*Mathf.Cos(omega) , Random.Range(-100, 100), position.z + sdistance*Mathf.Sin(omega)); sdistance += sradius; string sname = name + ": " + i; /* float sdistance = Random.Range(pdistance, radius) + (2 * pdistance) */ PlanetarySystem system = new PlanetarySystem(stype, 0, sname, sradius, 0, sposition); system.setNumPlanets(Random.Range(3, 9)); if(!system.createSystem()){ cluster_created = false; break; } else{ factory = (SphereRendererFactory)GameObject.Find("SphereRendererFactory").GetComponent("SphereRendererFactory"); base.sub_spheres[i] = factory.createSphereRenderer(); base.sub_spheres[i].initialize(0, 0, system_threshold,1, system); //base.sub_spheres[i].setIsDisplayed(true); } cluster_created = true; } } return cluster_created; }