public void InitializeOrbits(int count)
 {
     Orbits.Clear();
     for (int i = 0; i < count; i++)
     {
         Orbits.Add(new Orbit(2f * (Random.value > 0.5f ? 1f : -1f), 5 * (i + 1)));
     }
 }
Exemple #2
0
 protected void IntialiseOrbits()
 {
     for (int i = 0; i < Constants.MAX_ORBITS; i++)
     {
         var orbit = new Orbit();
         Orbits.Add(orbit);
     }
 }
 /// <summary>
 /// Gets the Body's realative position based on it's orbit and current time.
 /// Returns (0,0,0) if the body is not orbiting another body.
 /// </summary>
 /// <param name="days"></param>
 public Vector3d GetPosition(double days)
 {
     if (Orbits == null)
     {
         return(new Vector3d());
     }
     return(Orbits.getPosition(days));
 }
Exemple #4
0
    //Asing position to electrons, equidistant, set layer, return position
    Vector3 segment_switch(int i, Orbits o)
    {
        Vector3 origin   = gameObject.transform.position;
        float   r_scale  = 0.5f;
        Vector3 first    = Vector3.right / r_scale;
        Vector3 director = Vector3.right;
        Orbits  orbit    = electron_holder[i].GetComponent <Orbits>();

        /************************* LEVEL K ***************************/
        switch (i)
        {
        case 0:
            orbit.layer = 1;
            return((first) + (origin));

            break;

        case 1:
            orbit.layer = 1;
            return(-(first) + (origin));

            break;

        default:
            break;
        }
        /************************* LEVEL L ***************************/
        if (i > 1 && i < 10)
        {
            int level_l = electron_num - 2;
            if (level_l >= 8)
            {
                level_l = 8;
            }
            float arc = 360 / level_l;
            i = i - 1;
            if (arc * i == 360)
            {
                arc = 0;
            }
            var rot = Quaternion.AngleAxis(arc * i, Vector3.up);
            director    = rot * first * 2 + origin;
            orbit.layer = 2;
            /************************* LEVEL M ***************************/
        }
        else
        {
            int   level_m = electron_num - 10;
            float arc     = 360 / level_m;
            i = i - 9;
            var rot = Quaternion.AngleAxis(arc * i, Vector3.up);
            director    = rot * first * 3 + origin;
            orbit.layer = 3;
        }
        return(director);
    }
Exemple #5
0
    /// <summary>
    /// Start
    /// </summary>
    void Start()
    {
        Random.seed = GetInstanceID();

        timer  = new Timer(minDriftTime, maxDriftTime);
        orbits = GameObject.Find("Main Camera").GetComponent <Orbits>();
        origin = transform.position;
        trace  = GetComponent <ParticleSystem>();

        Drift();
    }
Exemple #6
0
        public void BuildSystem(double ComLumAddFromPrim)
        {
            HZone = -2;
            var buildOrbit = !(Orbits.Count > 0);

            for (int i = 0; i < Constants.MAX_ORBITS; i++)
            {
                var orbit = new Orbit();
                if (!buildOrbit)
                {
                    orbit = Orbits[i];
                }

                orbit.OrbitRange(i);
                orbit.SetOrbitType(Luminosity, ComLumAddFromPrim);
                if (orbit.OrbitalType == Orbit.OrbitType.HABITABLE)
                {
                    HZone = i;
                }
                else if (orbit.OrbitalType == Orbit.OrbitType.OUTER && HZone == -2)
                {
                    HZone = i - 1;
                }
                if (buildOrbit)
                {
                    Orbits.Add(orbit);
                }
            }
            if (HZone == -2)
            {
                HZone = 10;
            }

            PlaceEmptyOrbits();
            PlaceCapturedPlanets();
            PlaceGasGiants();
            PlacePlanetoidBelts();

            foreach (var orbit in Orbits)
            {
                if (orbit.Number > NumOrbits)
                {
                    if (orbit.Occupied != Orbit.OccupiedBy.CAPTURED)
                    {
                        orbit.OrbitalType = Orbit.OrbitType.UNAVAILABLE;
                    }
                }
            }
        }
Exemple #7
0
        private static int ChooseOrbitCount(Random random, StellarClass stellarClass)
        {
            Orbits orbits = WeightedChoices.Choose <Orbits>(random, StarHelper.OrbitCountWeights);
            int    num1   = Math.Max(0, (int)orbits);
            int    val2   = num1;

            if ((Orbits)val2 != orbits)
            {
                throw new NotImplementedException(string.Format("Orbits.{0} not handled for Stars", (object)orbits));
            }
            switch (stellarClass.Size)
            {
            case StellarSize.Ia:
            case StellarSize.Ib:
            case StellarSize.II:
                StarSystem.Trace("Special Rule: If Star Size I or II THEN # of orbits = # of orbits + 4");
                val2 += 4;
                break;

            case StellarSize.III:
                StarSystem.Trace("Special Rule: If Star Size III THEN # of orbits = # of orbits + 2");
                val2 += 2;
                break;
            }
            switch (stellarClass.Type)
            {
            case StellarType.K:
                StarSystem.Trace("Special Rule: If Star Type K THEN # of orbits = # of orbits - 1");
                --val2;
                break;

            case StellarType.M:
                StarSystem.Trace("Special Rule: If Star Type M THEN # of orbits = # of orbits - 2");
                val2 -= 2;
                break;
            }
            int num2 = Math.Max(0, val2);

            StarSystem.Trace("Final orbit count: {0}\n", (object)num2);
            if (num2 == 0 && num1 > 0)
            {
                return(1);
            }
            return(num2);
        }
        private SolarSystemData()
        {
            this.SolarSystemObjects = new SolarSystemObjects();
            this.SolarSystemObjects.Add(new Mercury());
            this.SolarSystemObjects.Add(new Venus());
            this.SolarSystemObjects.Add(new Earth());
            this.SolarSystemObjects.Add(new Mars());
            this.SolarSystemObjects.Add(new Jupiter());
            this.SolarSystemObjects.Add(new Saturn());
            this.SolarSystemObjects.Add(new Uranus());
            this.SolarSystemObjects.Add(new Neptune());
            this.SolarSystemObjects.Add(new Pluto());
            this.SolarSystemObjects.Add(new Sun());
            this.SolarSystemObjects.Add(new Moon());
            this.SolarSystemObjects.Add(new EarthShadow());

            this.location = LocationST.GetInstance();
            this.Orbits   = new Orbits(orbitNames);
            this.copyOrb  = new Orbits(orbitNames);
        }
Exemple #9
0
        public void Stage6()
        {
            // introduce shooting - pick up a ball, force the dash, shoot the target - no orbits this time
            if (Orbits == Standard)
            {
                foreach (Orbit orbit in Orbits)
                {
                    orbit.Remove();
                }
            }
            Orbits = Empty;
            Orbits.Add(new Orbit(.8f, .38f, .05f));
            text  = "And finally:\nShoot to kill\nyour opponents";
            point = new PointF(W / 2, W / 4);

            Head player = HEADS[key_player];

            player.act = Activities.DEFAULT;
            player.pos = new IPoint(W * .7d, W * .19d);
            player.v   = speed * IVector.Left;

            bot.act        = Activities.DEFAULT;
            bot.pos        = new IPoint(W * 1 / 4, W / 4);
            bot.v          = IVector.Up;
            bot.INVINCIBLE = true;

            lock (Orb.OrbLock) for (int i = 1; i < 12; i++)
                {
                    new Orb(true).pos = new IPoint(W * 1 / 4, W / 2 * i / 13);
                }

            bot1.INACTIVE    = false;
            bot1.color       = Color.Green;
            bot1.DisplayKey  = "×";
            bot1.pos         = new IPoint(.8d * W, .215d * W);
            bot1.act         = Activities.ORBITING;
            bot1.orbitCenter = new IPoint(W * .8f, W * .19f);

            new Orb(true).pos = new IPoint(W * .1f, W * .19f);
        }
Exemple #10
0
    // Let's get funky with the particles
    void spawner()
    {
        //Electrons
        for (int i = 0; i < electron_holder.Count; i++)
        {
            electron_holder[i].SetActive(true);
            Orbits orbit = electron_holder[i].GetComponent <Orbits>();
            orbit.nucleo = gameObject;
            electron_holder[i].transform.parent   = gameObject.transform;
            electron_holder[i].transform.position = segment_switch(i, orbit);
        }

        //Nucleus
        for (int i = 0; i < neutron_num; i++)
        {
            nuclear_init(i);
        }
        if (neutron_num == 0 && proton_num != 0)
        {
            nuclear_init(0);
        }
    }
Exemple #11
0
        public static IEnumerable <Kerberos.Sots.Data.StarMapFramework.Orbit> ChooseOrbitContents(
            Random random)
        {
            Orbits orbits = WeightedChoices.Choose <Orbits>(random.NextDouble(), GasGiantHelper.OrbitCountWeights);
            int    count  = StarSystemHelper.GetOrbitCount(orbits);

            if (count >= 0)
            {
                for (int orbitNumber = 1; orbitNumber <= count; ++orbitNumber)
                {
                    OrbitContents chosenContents = WeightedChoices.Choose <OrbitContents>(random.NextDouble(), GasGiantHelper.OrbitContentWeights);
                    Kerberos.Sots.Data.StarMapFramework.Orbit orbiter = StarSystemHelper.CreateOrbiterParams(chosenContents);
                    orbiter.OrbitNumber = orbitNumber;
                    yield return(orbiter);
                }
            }
            else if (orbits == Orbits.Ring)
            {
                int ringOrbitNumber = 1;
                Kerberos.Sots.Data.StarMapFramework.Orbit orbiter = StarSystemHelper.CreateOrbiterParams(OrbitContents.PlanetaryRing);
                orbiter.OrbitNumber = ringOrbitNumber;
                yield return(orbiter);
            }
        }
Exemple #12
0
    /// <summary>
    /// Start 
    /// </summary>
    void Start()
    {
        Random.seed = GetInstanceID();

        timer = new Timer(minDriftTime, maxDriftTime);
        orbits = GameObject.Find("Main Camera").GetComponent<Orbits>();
        origin = transform.position;
        trace = GetComponent<ParticleSystem>();

        Drift();
    }
Exemple #13
0
 public static int GetOrbitCount(Orbits orbits)
 {
     return(Math.Max(0, (int)orbits));
 }