Exemplo n.º 1
0
        public OrbitIconBase(EntityState entityState, List <List <UserOrbitSettings> > settings) : base(entityState.Entity.GetDataBlob <PositionDB>())
        {
            BodyType = entityState.BodyType;

            entityState.OrbitIcon = this;
            _mgr = entityState.Entity.Manager;
            _userOrbitSettingsMtx = settings;
            _orbitDB = entityState.Entity.GetDataBlob <OrbitDB>();
            if (entityState.Entity.HasDataBlob <OrbitUpdateOftenDB>())
            {
                _orbitDB = entityState.Entity.GetDataBlob <OrbitUpdateOftenDB>();
            }
            BodyPositionDB = entityState.Position; //entityState.Entity.GetDataBlob<PositionDB>();
            if (_orbitDB.Parent == null)           //primary star
            {
                _positionDB = BodyPositionDB;
            }
            else
            {
                _positionDB = _orbitDB.Parent.GetDataBlob <PositionDB>(); //orbit's position is parent's body position.
            }

            SemiMaj = (float)_orbitDB.SemiMajorAxis_AU;

            SemiMinor = (float)EllipseMath.SemiMinorAxis(_orbitDB.SemiMajorAxis_AU, _orbitDB.Eccentricity);



            _linearEccentricity = (float)(_orbitDB.Eccentricity * _orbitDB.SemiMajorAxis_AU); //linear ecentricity


            if (_orbitDB.Inclination_Degrees > 90 && _orbitDB.Inclination_Degrees < 270) //orbitDB is in degrees.
            {
                IsRetrogradeOrbit = true;
                //_loP_Degrees = (float)(_orbitDB.LongitudeOfAscendingNode - _orbitDB.ArgumentOfPeriapsis);
            }

            /*
             * else
             * {
             *
             *  _loP_Degrees = (float)(_orbitDB.LongitudeOfAscendingNode + _orbitDB.ArgumentOfPeriapsis);
             * }
             * _loP_radians = (float)(Angle.ToRadians(_loP_Degrees));
             */
            var i    = _orbitDB.Inclination;
            var _aoP = _orbitDB.ArgumentOfPeriapsis;
            var loan = _orbitDB.LongitudeOfAscendingNode;
            var lop  = OrbitMath.GetLongditudeOfPeriapsis(i, _aoP, loan);

            _loP_radians = (float)lop;
            _loP_Degrees = (float)Angle.ToDegrees(lop);
        }
Exemplo n.º 2
0
        public OrbitOrderWiget(OrbitDB orbitDB) : base(orbitDB.Parent.GetDataBlob <PositionDB>())
        {
            var targetEntity = orbitDB.Parent;

            _bodyPositionDB = targetEntity.GetDataBlob <PositionDB>();

            OrbitEllipseSemiMaj_m = (float)orbitDB.SemiMajorAxis;
            _eccentricity         = orbitDB.Eccentricity;
            EllipseMath.SemiMinorAxis(OrbitEllipseSemiMaj_m, _eccentricity);
            _linearEccentricity_m = (float)(orbitDB.Eccentricity * OrbitEllipseSemiMaj_m);

            _soiWorldRadius_AU    = OrbitProcessor.GetSOI_AU(targetEntity);
            _targetWorldRadius_AU = targetEntity.GetDataBlob <MassVolumeDB>().RadiusInAU;
            Setup();
        }
Exemplo n.º 3
0
        public OrbitOrderWiget(OrbitDB orbitDB) : base(orbitDB.Parent.GetDataBlob <PositionDB>())
        {
            var targetEntity = orbitDB.Parent;

            _bodyPositionDB = targetEntity.GetDataBlob <PositionDB>();

            OrbitEllipseSemiMaj = (float)orbitDB.SemiMajorAxis;
            _eccentricity       = orbitDB.Eccentricity;
            EllipseMath.SemiMinorAxis(OrbitEllipseSemiMaj, _eccentricity);
            _linearEccentricity = (float)(orbitDB.Eccentricity * OrbitEllipseSemiMaj);

            _soiWorldRadius = GMath.GetSOI(targetEntity);

            Setup();
        }
Exemplo n.º 4
0
        public OrbitIconBase(EntityState entityState, List <List <UserOrbitSettings> > settings) : base(entityState.Entity.GetDataBlob <PositionDB>())
        {
            BodyType = entityState.BodyType;

            entityState.OrbitIcon = this;
            _mgr = entityState.Entity.Manager;
            _userOrbitSettingsMtx = settings;
            _orbitDB       = entityState.Entity.GetDataBlob <OrbitDB>();
            BodyPositionDB = entityState.Position; //entityState.Entity.GetDataBlob<PositionDB>();
            if (_orbitDB.Parent == null)           //primary star
            {
                _positionDB = BodyPositionDB;
            }
            else
            {
                _positionDB = _orbitDB.Parent.GetDataBlob <PositionDB>(); //orbit's position is parent's body position.
            }

            SemiMaj = (float)_orbitDB.SemiMajorAxis;

            SemiMinor = (float)EllipseMath.SemiMinorAxis(_orbitDB.SemiMajorAxis, _orbitDB.Eccentricity);



            _linearEccentricity = (float)(_orbitDB.Eccentricity * _orbitDB.SemiMajorAxis); //linear ecentricity

            /*
             * if (_orbitDB.Inclination > 90 && _orbitDB.Inclination < 270) //orbitDB is in degrees.
             * {
             *  IsClockwiseOrbit = false;
             *  _loP_Degrees = (float)(_orbitDB.LongitudeOfAscendingNode - _orbitDB.ArgumentOfPeriapsis);
             * }
             * else
             * {
             *
             *  _loP_Degrees = (float)(_orbitDB.LongitudeOfAscendingNode + _orbitDB.ArgumentOfPeriapsis);
             * }
             * _loP_radians = (float)(Angle.ToRadians(_loP_Degrees));
             */
            var i    = Angle.ToRadians(_orbitDB.Inclination);
            var aop  = Angle.ToRadians(_orbitDB.ArgumentOfPeriapsis);
            var loan = Angle.ToRadians(_orbitDB.LongitudeOfAscendingNode);
            var lop  = OrbitMath.GetLongditudeOfPeriapsis(i, aop, loan);

            _loP_radians = (float)lop;
            _loP_Degrees = (float)Angle.ToDegrees(lop);
        }
Exemplo n.º 5
0
        internal OrbitIcon(ref EntityState entityState, UserOrbitSettings settings) : base(entityState.Entity.GetDataBlob <PositionDB>())
        {
            entityState.OrbitIcon = this;

            _userSettings   = settings;
            _orbitDB        = entityState.Entity.GetDataBlob <OrbitDB>();
            _bodyPositionDB = entityState.Entity.GetDataBlob <PositionDB>();
            if (_orbitDB.Parent == null) //primary star
            {
                _positionDB = _bodyPositionDB;
            }
            else
            {
                _positionDB = _orbitDB.Parent.GetDataBlob <PositionDB>(); //orbit's position is parent's body position.
            }

            _orbitEllipseSemiMaj   = (float)_orbitDB.SemiMajorAxis;
            _orbitEllipseMajor     = _orbitEllipseSemiMaj * 2;
            _orbitEllipseSemiMinor = (float)EllipseMath.SemiMinorAxis(_orbitDB.SemiMajorAxis, _orbitDB.Eccentricity);
            _orbitEllipseMinor     = _orbitEllipseSemiMinor * 2;


            _linearEccentricity = (float)(_orbitDB.Eccentricity * _orbitDB.SemiMajorAxis); //linear ecentricity

            if (_orbitDB.Inclination > 90 && _orbitDB.Inclination < 270)                   //orbitDB is in degrees.
            {
                IsClockwiseOrbit   = false;
                _orbitAngleDegrees = (float)(_orbitDB.LongitudeOfAscendingNode - _orbitDB.ArgumentOfPeriapsis);
            }
            else
            {
                _orbitAngleDegrees = (float)(_orbitDB.LongitudeOfAscendingNode + _orbitDB.ArgumentOfPeriapsis);
            }
            _orbitAngleRadians = (float)(Angle.ToRadians(_orbitAngleDegrees));

            UpdateUserSettings();
            CreatePointArray();

            OnPhysicsUpdate();
        }