void Update() { var lst = StarMath.LocalSiderealTime(astrobodiesSO.value, geographicCoordsSO.value, day.value); trackers = trackers.Where(t => t != null).ToList(); trackers.ForEach(t => UpdateTrackerPosition(t, lst)); }
void Update() { var lst = StarMath.LocalSiderealTime(astrobodiesSO.value, geocoordsSO.value, day.value); var obl_ecl = StarMath.ObliquityOfEcliptic(day.value); // var dirVernalEq_equatorial = new EquatorialCoords(0,0); var dirVernalEquinox_equ = new EquatorialCoords(0, 0); var dirCelestialPole_equ = new EquatorialCoords(0, 90); if (correctForPrecession) { dirVernalEquinox_equ = dirVernalEquinox_equ.ToCorrectedPrecession(day.value, obl_ecl); dirCelestialPole_equ = dirCelestialPole_equ.ToCorrectedPrecession(day.value, obl_ecl); } var dirVernalEquinox_vec = dirVernalEquinox_equ.ToVector3(); var dirCelestialPole_vec = dirCelestialPole_equ.ToVector3(); Vector3 dirForward, dirUp; switch (coordinateType) { default: case CelestialCoordinateType.Horizontal: dirForward = dirVernalEquinox_equ .ToHorizontal(geocoordsSO.value, lst) .ToVector3(); dirUp = dirCelestialPole_equ .ToHorizontal(geocoordsSO.value, lst) .ToVector3(); break; case CelestialCoordinateType.Equatorial: dirForward = dirVernalEquinox_vec; dirUp = dirCelestialPole_vec; break; case CelestialCoordinateType.Ecliptic: dirForward = Vector3.forward; dirUp = Vector3.up; break; } transform.localRotation = Quaternion.LookRotation(dirForward, dirUp); equatorialOrigin.value = Quaternion.LookRotation(dirVernalEquinox_vec, dirCelestialPole_vec); }