public void OnFlyByWire(ref FlightCtrlState c) { Expression e = cpu.GetDeepestChildContext().GetLock(propertyName); if (e != null) { this.Value = e.GetValue(); if (propertyName == "throttle") { c.mainThrottle = (float)Value; } if (propertyName == "steering") { if (Value is String && ((string)Value).ToUpper() == "KILL") { SteeringHelper.KillRotation(c, vessel); } else if (Value is Direction) { SteeringHelper.SteerShipToward((Direction)Value, c, vessel); } } if (cpu.GetLock(name) == null) { locked = false; } } }
public void OnFlyByWire(ref FlightCtrlState c) { Expression e = cpu.GetDeepestChildContext().GetLock(propertyName); if (e != null) { this.Value = e.GetValue(); if (propertyName == "throttle") { c.mainThrottle = (float)Value; } if (propertyName == "wheelthrottle") { c.wheelThrottle = (float)Value; } if (propertyName == "steering") { if (Value is String && ((string)Value).ToUpper() == "KILL") { SteeringHelper.KillRotation(c, vessel); } else if (Value is Direction) { SteeringHelper.SteerShipToward((Direction)Value, c, vessel); } } if (propertyName == "wheelsteering") { if (Value is VesselTarget) { var bearing = VesselUtils.GetTargetBearing(vessel, ((VesselTarget)Value).target); if (vessel.horizontalSrfSpeed > 0.1f) { if (Mathf.Abs(VesselUtils.AngleDelta(VesselUtils.GetHeading(vessel), VesselUtils.GetVelocityHeading(vessel))) <= 90) { c.wheelSteer = Mathf.Clamp(bearing / -10, -1, 1); } else { c.wheelSteer = -Mathf.Clamp(bearing / -10, -1, 1); } } } } if (cpu.GetLock(name) == null) { locked = false; } } }
private void UpdateSteering(ref FlightCtrlState c) { if (_value is string && ((string)_value).ToUpper() == "KILL") { SteeringHelper.KillRotation(c, _shared.Vessel); } else if (_value is Direction) { SteeringHelper.SteerShipToward((Direction)_value, c, _shared.Vessel); } else if (_value is Vector) { SteeringHelper.SteerShipToward(((Vector)_value).ToDirection(), c, _shared.Vessel); } else if (_value is Node) { SteeringHelper.SteerShipToward(((Node)_value).GetBurnVector().ToDirection(), c, _shared.Vessel); } }
public void OnFlyByWire(ref FlightCtrlState c) { Expression e = cpu.GetDeepestChildContext().GetLock(propertyName); if (e != null) { Value = e.GetValue(); if (propertyName == "throttle") { c.mainThrottle = (float)e.Double(); } if (propertyName == "wheelthrottle") { c.wheelThrottle = (float)Utils.Clamp(e.Double(), -1, 1); } if (propertyName == "steering") { if (Value is String && ((string)Value).ToUpper() == "KILL") { SteeringHelper.KillRotation(c, vessel); } else if (Value is Direction) { SteeringHelper.SteerShipToward((Direction)Value, c, vessel); } else if (Value is Vector) { SteeringHelper.SteerShipToward(((Vector)Value).ToDirection(), c, vessel); } else if (Value is Node) { SteeringHelper.SteerShipToward(((Node)Value).GetBurnVector().ToDirection(), c, vessel); } } if (propertyName == "wheelsteering") { float bearing = 0; if (Value is VesselTarget) { bearing = VesselUtils.GetTargetBearing(vessel, ((VesselTarget)Value).target); } else if (Value is GeoCoordinates) { bearing = ((GeoCoordinates)Value).GetBearing(vessel); } else if (Value is double) { bearing = (float)(Math.Round((double)Value) - Mathf.Round(FlightGlobals.ship_heading)); } if (vessel.horizontalSrfSpeed > 0.1f) { if (Mathf.Abs(VesselUtils.AngleDelta(VesselUtils.GetHeading(vessel), VesselUtils.GetVelocityHeading(vessel))) <= 90) { c.wheelSteer = Mathf.Clamp(bearing / -10, -1, 1); } else { c.wheelSteer = -Mathf.Clamp(bearing / -10, -1, 1); } } } if (cpu.GetLock(name) == null) { locked = false; } } }