public void UpdateOrbiterPosition() { TM = OrbitManager.GetComponent <TimeManipulator>(); OM = OrbitManager.GetComponent <OrbitManagement>(); //TM.JulianDateSliderValue = (int)JulianDateSlider.value; TM.JulianDate = OM.RawJulianTime[(int)JulianDateSlider.value]; TM.UpdateOrbiterPosition(); }
// currently invoked by Update() if numbers crunched // *** two other cases! // advances JulianDate by timestep (if toggled) public void OrbitUpdate() { if (GlobalRealTimeToggle.isOn) //using realtime { //Debug.Log("Updating Orbit with Real Time Values"); foreach (GameObject OrbitManager in OrbitManagers) { TimeManipulator TM = OrbitManager.GetComponent <TimeManipulator>(); TM.UseRealTime = true; TM.UpdateOrbiterPosition(); } } if (!GlobalRealTimeToggle.isOn) //not using realtime { if (UseTimeStepToggle.isOn) //using Timestep { // set NewJulian date to current JulianDate + scaled timestep increment NewJulianDate = JulianDate + (timeSteps[(int)TimeStepSlider.value] / (1 / updateFrequency)); // update JulianDateSlider // global flag fudged in so that GlobalJulianTime doesn't set NewJulianDate or play sounds timeStepMode = true; GlobalJulianDateSlider.value = IndexFromJD(AllTimes.ToArray(), NewJulianDate); timeStepMode = false; // Distribute JulianDate here if (JulianDate != NewJulianDate) { //Debug.Log("Updating Orbit with Dataset Values + timestep"); JulianDate = NewJulianDate; foreach (GameObject OrbitManager in OrbitManagers) { TimeManipulator TM = OrbitManager.GetComponent <TimeManipulator>(); TM.UseRealTime = false; TM.JulianDate = JulianDate; TM.UpdateOrbiterPosition(); } } } if (!UseTimeStepToggle.isOn) //not using timestep or realtime // slider used instead { NewJulianDate = AllTimes[(int)GlobalJulianDateSlider.value]; if (JulianDate != NewJulianDate) { //Debug.Log("Updating Orbit with Dataset Values"); JulianDate = NewJulianDate; foreach (GameObject OrbitManager in OrbitManagers) { TimeManipulator TM = OrbitManager.GetComponent <TimeManipulator>(); TM.UseRealTime = false; TM.JulianDate = JulianDate; TM.UpdateOrbiterPosition(); } } } } }
public void ForcedPositionUpdate() { foreach (GameObject OrbitManager in OrbitManagers) { // null check prevents crash when JSON browser opened if (OrbitManager != null) { TimeManipulator TM = OrbitManager.GetComponent <TimeManipulator>(); TM.UpdateOrbiterPosition(); } } }
public void Realtimetoggled() { if (!GlobalRealTimeToggle.isOn) { NewJulianDate = AllTimes[(int)GlobalJulianDateSlider.value]; JulianDate = NewJulianDate; foreach (GameObject OrbitManager in OrbitManagers) { TimeManipulator TM = OrbitManager.GetComponent <TimeManipulator>(); TM.UseRealTime = false; TM.JulianDate = JulianDate; TM.UpdateOrbiterPosition(); } } }
public void Update() { if (localpath != "filepathgoeshere" && !DataLoaded && !LoadingData) // LoadingData is not set, because current coroutine doesn't finish at this point { LoadingData = true; LoadDataCanvas.SetActive(false); StartCoroutine("LoadData"); Debug.Log("filepath = " + localpath); } if (CurrentScale != ScaleValue) { // does anything need to happen with attitude or models?? // ^^ probably not, because radii update and local scales applied in Update() // Regenerating orbit data with new scale applied List <GameObject> OrbitManagers = new List <GameObject>(); OrbitManagers.AddRange(GameObject.FindGameObjectsWithTag("OrbitalManager")); foreach (GameObject OrbitManager in OrbitManagers) { for (int i = 0; i < orbitalDataUnity.Orbits.Count; i++) { if (orbitalDataUnity.Orbits[i].Name == OrbitManager.name) { OrbitManagement OM = OrbitManager.GetComponent <OrbitManagement>(); OM.RawPositions.Clear(); OM.RawPositions = new List <Vector3>(); //extract positions list from RawEphData foreach (RawEphData data in orbitalDataUnity.Orbits[i].Eph) { //convert rawEphData position doubles into floats float xpos = (float)data.xPos; float ypos = (float)data.yPos; float zpos = (float)data.zPos; // convert floats divided by descaler value into Vector3 positions Vector3 positions = new Vector3(xpos / ScaleValue, ypos / ScaleValue, zpos / ScaleValue); //pass list of raw positions to orbit management script OM.RawPositions.Add(positions); } float radii = new float(); if (orbitalDataUnity.Info.Units == "km") { radii = (float)orbitalDataUnity.Orbits[i].Radius / ScaleValue; if (radii < 0.0025f) { OM.Radius = 0.0025f; } else { OM.Radius = radii; } } if (orbitalDataUnity.Info.Units == "au") { radii = (float)orbitalDataUnity.Orbits[i].Radius; if (radii < 0.0125) { OM.Radius = 0.0125f; } else { OM.Radius = radii; } } //Debug.Log(radii); } } //Debug.Log(OrbitManager.gameObject.name); } CurrentScale = ScaleValue; // update positions to reflect new scale // propagate flags down to OM instances to indicate scale change foreach (GameObject OrbitManager in OrbitManagers) { TimeManipulator TM = OrbitManager.GetComponent <TimeManipulator>(); OrbitManagement OM = OrbitManager.GetComponent <OrbitManagement>(); OM.scaleChanged = true; TM.UpdateOrbiterPosition(); } } }