public CelestialSystem CreateFromSerialized(IProjectileFactory projectileFactory, IPlanetFactory planetFactory, IWeaponFactory weaponFactory) { var celestialSystem = resolver.Resolve <CelestialSystem>(); var planets = new List <IPlanet>(); var central = scs.planets.First(planet => planet.isCentral); var centralStarPlanet = planetFactory.CreatePlanet(central.entity.pos); central.entity.FillIn(centralStarPlanet.SimulatedEntity); celestialSystem.AddCentralStar(centralStarPlanet); foreach (var serializedPlanet in scs.planets.Except(new [] { central })) { var appearance = new PlanetAppearance() { color = serializedPlanet.color }; var planet = planetFactory.CreatePlanet(serializedPlanet.entity.pos, appearance); weaponFactory.AddWeapon(serializedPlanet.weaponType, planet); serializedPlanet.entity.FillIn(planet.SimulatedEntity); planets.Add(planet); } celestialSystem.AddRaw(planets); projectileFactory.celestialSystem = celestialSystem; foreach (var projectile in scs.projectiles) { var proj = projectileFactory.CreateBullet(projectile.entity.pos); projectile.entity.FillIn(proj); } return(celestialSystem); }
public void SetAppearance(Color color) { Appearance = new PlanetAppearance { color = color }; GetComponent <SpriteRenderer>().color = color; }
private CrdsEquatorial JupiterMoon_Equatorial(SkyContext c, int m) { CrdsEquatorial jupiterEq = c.Get(Planet_Equatorial, Planet.JUPITER); CrdsRectangular planetocentric = c.Get(JupiterMoon_Rectangular, m); PlanetAppearance appearance = c.Get(Planet_Appearance, Planet.JUPITER); double semidiameter = c.Get(Planet_Semidiameter, Planet.JUPITER); return(planetocentric.ToEquatorial(jupiterEq, appearance.P, semidiameter)); }
public void GetAppearanceFromGameObject() { var color = GetComponent <SpriteRenderer>().color; Appearance = new PlanetAppearance { color = color }; }
private CrdsEquatorial SaturnMoon_Equatorial(SkyContext c, int m) { CrdsEquatorial saturnEq = c.Get(Planet_Equatorial, Planet.SATURN); CrdsRectangular planetocentric = c.Get(SaturnMoon_Rectangular, m); PlanetAppearance appearance = c.Get(Planet_Appearance, Planet.SATURN); double semidiameter = c.Get(Planet_Semidiameter, Planet.SATURN); return(planetocentric.ToEquatorial(saturnEq, appearance.P, semidiameter)); }
public void PlanetAppearance() { // 1 January 1982, TD double jd = 2444970.500608; // Geocentric coordinates of Mars CrdsEquatorial eq = new CrdsEquatorial(187.4042, -0.6522); // 0 in this case means no light-time effect PlanetAppearance a = PlanetEphem.PlanetAppearance(jd, 4, eq, 0); Assert.AreEqual(30.24, a.P, 1e-2); Assert.AreEqual(23.50, a.D, 1e-2); Assert.AreEqual(150.97, a.CM, 1e-2); // with respect of light-time effect double distance = 1.290617; double cm = Math.Abs(PlanetEphem.PlanetAppearance(jd, 4, eq, distance).CM - a.CM); // difference in longitude shoould be about 2.62 (see page 96). Assert.AreEqual(2.62, cm, 1e-2); }