Пример #1
0
    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);
    }
Пример #2
0
 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));
        }
Пример #4
0
    public void GetAppearanceFromGameObject()
    {
        var color = GetComponent <SpriteRenderer>().color;

        Appearance = new PlanetAppearance
        {
            color = color
        };
    }
Пример #5
0
        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));
        }
Пример #6
0
        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);
        }