public static GameObject GenerateBody(IPlanetConfig config) { Logger.Log("Begin generation sequence of [" + config.Name + "] ...", Logger.LogType.Log); var body = new GameObject(config.Name); body.SetActive(false); GeometryBuilder.Make(body, config.GroundSize); var outputTuple = BaseBuilder.Make(body, Locator.GetAstroObject(AstroObject.StringIDToAstroObjectName(config.PrimaryBody)), config); var owRigidbody = (OWRigidbody)outputTuple.Items[1]; RFVolumeBuilder.Make(body, owRigidbody, config); if (config.HasMapMarker) { MarkerBuilder.Make(body, config); } var sector = MakeSector.Make(body, owRigidbody, config); if (config.HasClouds) { CloudsBuilder.Make(body, sector, config); SunOverrideBuilder.Make(body, sector, config); } AirBuilder.Make(body, config.TopCloudSize / 2, config.HasRain); if (config.HasWater) { WaterBuilder.Make(body, sector, config); } EffectsBuilder.Make(body, sector); VolumesBuilder.Make(body, config); AmbientLightBuilder.Make(body, sector, config); AtmosphereBuilder.Make(body, config); Logger.Log("Generation of [" + config.Name + "] completed.", Logger.LogType.Log); return(body); }
public static void CreateBody(IPlanetConfig config) { var planet = Main.GenerateBody(config); planet.transform.parent = Locator.GetRootTransform(); planet.transform.position = Locator.GetAstroObject(AstroObject.StringIDToAstroObjectName(config.PrimaryBody)).gameObject.transform.position + config.Position.ToVector3(); planet.SetActive(true); planet.GetComponent <OWRigidbody>().SetVelocity(Locator.GetCenterOfTheUniverse().GetOffsetVelocity()); var primary = Locator.GetAstroObject(AstroObject.StringIDToAstroObjectName(config.PrimaryBody)).GetAttachedOWRigidbody(); var initialMotion = primary.GetComponent <InitialMotion>(); if (initialMotion != null) { planet.GetComponent <OWRigidbody>().AddVelocityChange(-initialMotion.GetInitVelocity()); planet.GetComponent <OWRigidbody>().AddVelocityChange(primary.GetVelocity()); } }
void OnSceneLoaded(Scene scene, LoadSceneMode mode) { if (scene.name != "SolarSystem") { return; } foreach (var body in BodyList) { var planetObject = GenerateBody(body.Config); var primayBody = Locator.GetAstroObject(AstroObject.StringIDToAstroObjectName(body.Config.PrimaryBody)); planetObject.transform.parent = Locator.GetRootTransform(); planetObject.transform.position = primayBody.gameObject.transform.position + body.Config.Position.ToVector3(); planetObject.SetActive(true); body.Object = planetObject; } finishNextUpdate = true; }