From d30eb0b30d792eba01e1e0228e295bb43c516901 Mon Sep 17 00:00:00 2001 From: William C Date: Sun, 18 Nov 2018 12:07:15 +0000 Subject: [PATCH] kRPC Patch A quick and dirty patch for compatibility with kRPC. --- GameData/KerbalWind/Plugins/KerbalWind.dll | Bin 27136 -> 28160 bytes KerbalWind.cs | 182 ++++++++++++++------- 2 files changed, 124 insertions(+), 58 deletions(-) diff --git a/GameData/KerbalWind/Plugins/KerbalWind.dll b/GameData/KerbalWind/Plugins/KerbalWind.dll index d0b3e03aa49f440743e360d4846fd330c6142d5a..d75740f7a29fcdf933bc7d96c5c8f382d566330f 100644 GIT binary patch literal 28160 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 diff --git a/KerbalWind.cs b/KerbalWind.cs index f62ef30..7b07625 100644 --- a/KerbalWind.cs +++ b/KerbalWind.cs @@ -31,10 +31,13 @@ THE SOFTWARE. using System; using System.ComponentModel; +using System.Collections.Generic; using System.Text; using UnityEngine; using KSP.IO; using System.Reflection; +using KRPC.Service; +using KRPC.Service.Attributes; namespace KerbalWind @@ -75,6 +78,58 @@ public static float Floor(float x, int digits) /* https://en.wikipedia.org/wiki/Continuous_gusts * for now neglecting altitude dependence */ + + [KRPCService] + public static class Wind + { + public static bool Manual; + public static bool wind; + public static Vector3 windD; + public static float wspd; + public static bool update; + [KRPCProperty] + public static IDictionary Direction + { + get + { + IDictionary newDict = new Dictionary(); + newDict.Add("x", windD.x); + newDict.Add("y", windD.y); + newDict.Add("z", windD.z); + return newDict; + } + set + { + windD.x = value["x"]; + windD.y = value["y"]; + windD.z = value["z"]; + Manual = true; + update = true; + } + } + [KRPCProperty] + public static float WindSpeed + { + get => wspd; + set { + wspd = value; + Manual = true; + update = true; + } + } + [KRPCProperty] + public static bool IsWind + { + get => wind; + set + { + wind = value; + Manual = true; + update = true; + } + } + } + class ContinuousGustsModel { // directions: @@ -467,6 +522,10 @@ void FixedUpdate() windVectorWS = mSurfaceToWorld * windVector; if (FlightGlobals.ready && FlightGlobals.ActiveVessel != null) { + if (Wind.update){ + ComputeWindVector(); + Wind.update = false; + } Vessel vessel = FlightGlobals.ActiveVessel; Vector3 vehicle_velocity = vessel.srf_velocity; double radarAltitude = vessel.altitude - Math.Max(0, vessel.terrainAltitude); // terrainAltitude is the deviation of the terrain from the sea level. @@ -511,63 +570,69 @@ void ComputeWindVector() { // X = north, consistent with vessel axes where x points north for vessels on the KSC runway pointing east // Z = east - windDirection = Vector3.zero; - windDirLabel = "x"; - windEnabled = true; - //string dirLabel2 = ""; - switch (windDirectionId) - { - case 4: - windEnabled = false; - break; - case 7: // S - windDirection.x = -1; - windDirLabel = "\u2193"; - //dirLabel2 = "N"; - break; - case 3: // W - windDirection.z = -1; - windDirLabel = "\u2190"; - //dirLabel2 = "E"; - break; - case 1: // N - windDirection.x = 1; - windDirLabel = "\u2191"; - //dirLabel2 = "S"; - break; - case 5: // E - windDirection.z = 1; - windDirLabel = "\u2192"; - //dirLabel2 = "W"; - break; - case 6: // SW - windDirection.z = -1; - windDirection.x = -1; - windDirLabel = "\u2199"; - //dirLabel2 = "NE"; - break; - case 0: // NW - windDirection.z = -1; - windDirection.x = 1; - windDirLabel = "\u2196"; - //dirLabel2 = "SE"; - break; - case 2: // NE - windDirection.z = 1; - windDirection.x = 1; - windDirLabel = "\u2197"; - //dirLabel2 = "SW"; - break; - case 8: // SE - windDirection.z = 1; - windDirection.x = -1; - windDirLabel = "\u2198"; - //dirLabel2 = "NW"; - break; + if (!Wind.wind) { + windDirection = Vector3.zero; + windDirLabel = "x"; + windEnabled = true; + //string dirLabel2 = ""; + switch (windDirectionId) + { + case 4: + windEnabled = false; + break; + case 7: // S + windDirection.x = -1; + windDirLabel = "\u2193"; + //dirLabel2 = "N"; + break; + case 3: // W + windDirection.z = -1; + windDirLabel = "\u2190"; + //dirLabel2 = "E"; + break; + case 1: // N + windDirection.x = 1; + windDirLabel = "\u2191"; + //dirLabel2 = "S"; + break; + case 5: // E + windDirection.z = 1; + windDirLabel = "\u2192"; + //dirLabel2 = "W"; + break; + case 6: // SW + windDirection.z = -1; + windDirection.x = -1; + windDirLabel = "\u2199"; + //dirLabel2 = "NE"; + break; + case 0: // NW + windDirection.z = -1; + windDirection.x = 1; + windDirLabel = "\u2196"; + //dirLabel2 = "SE"; + break; + case 2: // NE + windDirection.z = 1; + windDirection.x = 1; + windDirLabel = "\u2197"; + //dirLabel2 = "SW"; + break; + case 8: // SE + windDirection.z = 1; + windDirection.x = -1; + windDirLabel = "\u2198"; + //dirLabel2 = "NW"; + break; + } + windDirection.Normalize(); + windSpd = Util.Floor(windSpdGuiState, 0); // round to next greater integer so we go relatively slowly in 1m/s steps while the MB is down. + }else{ + windDirection = Wind.windD; + windSpd = Wind.wspd; + windEnabled = Wind.wind; } - windDirection.Normalize(); - windSpd = Util.Floor(windSpdGuiState, 0); // round to next greater integer so we go relatively slowly in 1m/s steps while the MB is down. - windVector = windSpd*windDirection; + windVector = windSpd * windDirection; gustsmodel.Init(Util.Floor(gustsSeverityGuiState,1)); } @@ -629,14 +694,15 @@ void MakeMainWindow(int id) //string[] selStrings = new String[] {"", "", "", "", windDirLabel, "", "", "", ""}; selStrings[windDirectionId] = windDirLabel; windDirectionId = GUILayout.SelectionGrid(windDirectionId, selStrings, 3); - if (windDirectionId != oldWindDirectionNumb) + if (windDirectionId != oldWindDirectionNumb) { needsUpdate = true; } - if (needsUpdate) + if (needsUpdate) { ComputeWindVector(); needsUpdate = false; + Wind.update = false; } //if (windDirectionId==DIRECTION_DIAL_NO_WIND)