Beispiel #1
0
 public static void UpdateVesselProtoFlightState(VesselFlightStateMsgData msgData)
 {
     if (AllPlayerVessels.TryGetValue(msgData.VesselId, out var vesselProtoUpd))
     {
         VesselFlightStateSystem.Singleton.UpdateFlightStateInProtoVessel(vesselProtoUpd.ProtoVessel, msgData);
     }
 }
        public void SendCurrentFlightState()
        {
            var flightState = new FlightCtrlState();

            flightState.CopyFrom(FlightGlobals.ActiveVessel.ctrlState);

            var msg = new VesselFlightStateMsgData
            {
                VesselId          = FlightGlobals.ActiveVessel.id,
                GearDown          = flightState.gearDown,
                GearUp            = flightState.gearUp,
                Headlight         = flightState.headlight,
                KillRot           = flightState.killRot,
                MainThrottle      = flightState.mainThrottle,
                Pitch             = flightState.pitch,
                PitchTrim         = flightState.pitchTrim,
                Roll              = flightState.roll,
                RollTrim          = flightState.rollTrim,
                WheelSteer        = flightState.wheelSteer,
                WheelSteerTrim    = flightState.wheelSteerTrim,
                WheelThrottle     = flightState.wheelThrottle,
                WheelThrottleTrim = flightState.wheelThrottleTrim,
                X       = flightState.X,
                Y       = flightState.Y,
                Yaw     = flightState.yaw,
                YawTrim = flightState.yawTrim,
                Z       = flightState.Z
            };

            SendMessage(msg);
        }
Beispiel #3
0
        public void SetTarget(VesselFlightStateMsgData msgData)
        {
            _resetStart     = true;
            _lerpPercentage = 0;

            if (Target == null)
            {
                Target = GetFlightCtrlStateFromMsg(msgData);
            }
            else
            {
                Target.mainThrottle      = msgData.MainThrottle;
                Target.wheelThrottleTrim = msgData.WheelThrottleTrim;
                Target.X              = msgData.X;
                Target.Y              = msgData.Y;
                Target.Z              = msgData.Z;
                Target.killRot        = msgData.KillRot;
                Target.gearUp         = msgData.GearUp;
                Target.gearDown       = msgData.GearDown;
                Target.headlight      = msgData.Headlight;
                Target.wheelThrottle  = msgData.WheelThrottle;
                Target.roll           = msgData.Roll;
                Target.yaw            = msgData.Yaw;
                Target.pitch          = msgData.Pitch;
                Target.rollTrim       = msgData.RollTrim;
                Target.yawTrim        = msgData.YawTrim;
                Target.pitchTrim      = msgData.PitchTrim;
                Target.wheelSteer     = msgData.WheelSteer;
                Target.wheelSteerTrim = msgData.WheelSteerTrim;
            }

            StartTimeStamp = EndTimeStamp;
            EndTimeStamp   = msgData.TimeStamp;
        }
        public VesselFlightStateUpdate(VesselFlightStateMsgData msgData)
        {
            VesselId      = msgData.VesselId;
            GameTimeStamp = msgData.GameTime;
            SubspaceId    = msgData.SubspaceId;

            CtrlState.CopyFrom(msgData);
        }
Beispiel #5
0
        public void SetTarget(VesselFlightStateMsgData msgData)
        {
            //If we are in the middle of an interpolation let it finish
            if (CanInterpolate && !InterpolationFinished)
            {
                return;
            }

            if (Start == null)
            {
                Start          = GetFlightCtrlStateFromMsg(msgData);
                StartTimeStamp = msgData.TimeStamp;

                return;
            }

            if (Target == null)
            {
                Target       = GetFlightCtrlStateFromMsg(msgData);
                EndTimeStamp = msgData.TimeStamp;

                return;
            }

            //We've finished the interpolation so...
            _lerpPercentage = 0;

            Start.CopyFrom(Target);
            StartTimeStamp = EndTimeStamp;

            Target.mainThrottle      = msgData.MainThrottle;
            Target.wheelThrottleTrim = msgData.WheelThrottleTrim;
            Target.X              = msgData.X;
            Target.Y              = msgData.Y;
            Target.Z              = msgData.Z;
            Target.killRot        = msgData.KillRot;
            Target.gearUp         = msgData.GearUp;
            Target.gearDown       = msgData.GearDown;
            Target.headlight      = msgData.Headlight;
            Target.wheelThrottle  = msgData.WheelThrottle;
            Target.roll           = msgData.Roll;
            Target.yaw            = msgData.Yaw;
            Target.pitch          = msgData.Pitch;
            Target.rollTrim       = msgData.RollTrim;
            Target.yawTrim        = msgData.YawTrim;
            Target.pitchTrim      = msgData.PitchTrim;
            Target.wheelSteer     = msgData.WheelSteer;
            Target.wheelSteerTrim = msgData.WheelSteerTrim;

            EndTimeStamp = msgData.TimeStamp;
        }
Beispiel #6
0
 public static void CopyFrom(this FlightCtrlState fs, VesselFlightStateMsgData msgData)
 {
     fs.mainThrottle      = msgData.MainThrottle;
     fs.wheelThrottleTrim = msgData.WheelThrottleTrim;
     fs.X              = msgData.X;
     fs.Y              = msgData.Y;
     fs.Z              = msgData.Z;
     fs.killRot        = msgData.KillRot;
     fs.gearUp         = msgData.GearUp;
     fs.gearDown       = msgData.GearDown;
     fs.headlight      = msgData.Headlight;
     fs.wheelThrottle  = msgData.WheelThrottle;
     fs.roll           = msgData.Roll;
     fs.yaw            = msgData.Yaw;
     fs.pitch          = msgData.Pitch;
     fs.rollTrim       = msgData.RollTrim;
     fs.yawTrim        = msgData.YawTrim;
     fs.pitchTrim      = msgData.PitchTrim;
     fs.wheelSteer     = msgData.WheelSteer;
     fs.wheelSteerTrim = msgData.WheelSteerTrim;
 }
Beispiel #7
0
 private static FlightCtrlState GetFlightCtrlStateFromMsg(VesselFlightStateMsgData msgData)
 {
     return(new FlightCtrlState
     {
         mainThrottle = msgData.MainThrottle,
         wheelThrottleTrim = msgData.WheelThrottleTrim,
         X = msgData.X,
         Y = msgData.Y,
         Z = msgData.Z,
         killRot = msgData.KillRot,
         gearUp = msgData.GearUp,
         gearDown = msgData.GearDown,
         headlight = msgData.Headlight,
         wheelThrottle = msgData.WheelThrottle,
         roll = msgData.Roll,
         yaw = msgData.Yaw,
         pitch = msgData.Pitch,
         rollTrim = msgData.RollTrim,
         yawTrim = msgData.YawTrim,
         pitchTrim = msgData.PitchTrim,
         wheelSteer = msgData.WheelSteer,
         wheelSteerTrim = msgData.WheelSteerTrim
     });
 }
Beispiel #8
0
 internal void UpdateFlightStateInProtoVessel(ProtoVessel protoVessel, VesselFlightStateMsgData msgData)
 {
     UpdateFlightStateInProtoVessel(protoVessel, msgData.Pitch, msgData.Yaw, msgData.Roll, msgData.PitchTrim,
                                    msgData.YawTrim, msgData.RollTrim, msgData.MainThrottle);
 }
        /// <summary>
        /// Updates the proto vessel with the values we received about a flight state of a vessel
        /// </summary>
        private static string UpdateProtoVesselWithNewFlightStateData(string vesselData, VesselFlightStateMsgData msgData)
        {
            var document = new XmlDocument();

            document.LoadXml(vesselData);

            var node = document.SelectSingleNode($"/{ConfigNodeXmlParser.StartElement}/{ConfigNodeXmlParser.ParentNode}[@name='CTRLSTATE']/{ConfigNodeXmlParser.ValueNode}[@name='pitch']");

            if (node != null)
            {
                node.InnerText = msgData.Pitch.ToString(CultureInfo.InvariantCulture);
            }

            node = document.SelectSingleNode($"/{ConfigNodeXmlParser.StartElement}/{ConfigNodeXmlParser.ParentNode}[@name='CTRLSTATE']/{ConfigNodeXmlParser.ValueNode}[@name='yaw']");
            if (node != null)
            {
                node.InnerText = msgData.Yaw.ToString(CultureInfo.InvariantCulture);
            }

            node = document.SelectSingleNode($"/{ConfigNodeXmlParser.StartElement}/{ConfigNodeXmlParser.ParentNode}[@name='CTRLSTATE']/{ConfigNodeXmlParser.ValueNode}[@name='roll']");
            if (node != null)
            {
                node.InnerText = msgData.Roll.ToString(CultureInfo.InvariantCulture);
            }

            node = document.SelectSingleNode($"/{ConfigNodeXmlParser.StartElement}/{ConfigNodeXmlParser.ParentNode}[@name='CTRLSTATE']/{ConfigNodeXmlParser.ValueNode}[@name='trimPitch']");
            if (node != null)
            {
                node.InnerText = msgData.PitchTrim.ToString(CultureInfo.InvariantCulture);
            }

            node = document.SelectSingleNode($"/{ConfigNodeXmlParser.StartElement}/{ConfigNodeXmlParser.ParentNode}[@name='CTRLSTATE']/{ConfigNodeXmlParser.ValueNode}[@name='trimYaw']");
            if (node != null)
            {
                node.InnerText = msgData.YawTrim.ToString(CultureInfo.InvariantCulture);
            }

            node = document.SelectSingleNode($"/{ConfigNodeXmlParser.StartElement}/{ConfigNodeXmlParser.ParentNode}[@name='CTRLSTATE']/{ConfigNodeXmlParser.ValueNode}[@name='trimRoll']");
            if (node != null)
            {
                node.InnerText = msgData.RollTrim.ToString(CultureInfo.InvariantCulture);
            }

            node = document.SelectSingleNode($"/{ConfigNodeXmlParser.StartElement}/{ConfigNodeXmlParser.ParentNode}[@name='CTRLSTATE']/{ConfigNodeXmlParser.ValueNode}[@name='mainThrottle']");
            if (node != null)
            {
                node.InnerText = msgData.MainThrottle.ToString(CultureInfo.InvariantCulture);
            }

            return(document.ToIndentedString());
        }