void IParserEventSubscriber.Apply(ConfigNode node) { if (generatedBody == null) { return; } // If this body needs orbit controllers, create them if (generatedBody.orbitDriver == null) { generatedBody.orbitDriver = generatedBody.celestialBody.gameObject.AddComponent <OrbitDriver>(); generatedBody.orbitRenderer = generatedBody.celestialBody.gameObject.AddComponent <OrbitRenderer>(); } // Setup orbit generatedBody.orbitDriver.updateMode = OrbitDriver.UpdateMode.UPDATE; orbit = generatedBody.orbitDriver.orbit; referenceBody = orbit?.referenceBody?.name; float[] bounds = new float[] { generatedBody.orbitRenderer.lowerCamVsSmaRatio, generatedBody.orbitRenderer.upperCamVsSmaRatio }; cameraSmaRatioBounds = bounds; // Remove null if (orbit == null) { orbit = new Orbit(); } }
// Readers List <double[]> ReadCurve(FloatCurve curve) { ConfigNode config = new ConfigNode(); List <double[]> list = new List <double[]>(); NumericCollectionParser <double> value = new NumericCollectionParser <double>(); curve.Save(config); foreach (string k in config.GetValues("key")) { value.SetFromString(k); list.Add(value.Value.ToArray()); } return(list); }
void IParserEventSubscriber.Apply(ConfigNode node) { // If this body needs orbit controllers, create them if (generatedBody.orbitDriver == null) { generatedBody.orbitDriver = generatedBody.celestialBody.gameObject.AddComponent<OrbitDriver>(); generatedBody.orbitRenderer = generatedBody.celestialBody.gameObject.AddComponent<OrbitRenderer>(); } // Setup orbit generatedBody.orbitDriver.updateMode = OrbitDriver.UpdateMode.UPDATE; orbit = generatedBody.orbitDriver.orbit; referenceBody = orbit?.referenceBody?.name; float[] bounds = new float[] { generatedBody.orbitRenderer.lowerCamVsSmaRatio, generatedBody.orbitRenderer.upperCamVsSmaRatio }; cameraSmaRatioBounds = bounds; // Remove null if (orbit == null) orbit = new Orbit(); }
public void ModuleManagerPostLoad() { NumericCollectionParser <double> flareSettings = new NumericCollectionParser <double>(); NumericCollectionParser <double> spikesSettings = new NumericCollectionParser <double>(); double Rescale = 1; double customRescale = 1; if (!double.TryParse(GameDatabase.Instance.GetConfigNode("Sigma/Dimensions/Settings/SigmaDimensions")?.GetValue("Rescale"), out Rescale)) { Rescale = 1; } foreach (ConfigNode node in GameDatabase.Instance.GetConfigNodes("Scatterer_sunflare")) { foreach (ConfigNode star in node.GetNodes()) { // Load customRescale if (!double.TryParse(star.GetValue("customRescale"), out customRescale)) { customRescale = 1; } // Load Scatterer Settings double sunGlareFadeDistance = 0; double.TryParse(star.GetValue("sunGlareFadeDistance"), out sunGlareFadeDistance); if (star.HasValue("flareSettings")) { flareSettings.SetFromString(star.GetValue("flareSettings").Replace(",", " ")); } if (star.HasValue("spikesSettings")) { spikesSettings.SetFromString(star.GetValue("spikesSettings").Replace(",", " ")); } // Rescale Scatterer Settings if (customRescale != 1) { sunGlareFadeDistance *= customRescale; if (flareSettings?.Value?.Count > 2) { flareSettings.Value[2] = flareSettings.Value[2] / customRescale; } if (spikesSettings?.Value?.Count > 2) { spikesSettings.Value[2] = spikesSettings.Value[2] / customRescale; } } else { sunGlareFadeDistance *= Rescale; if (flareSettings?.Value?.Count > 2) { flareSettings.Value[2] = flareSettings.Value[2] / Rescale; } if (spikesSettings?.Value?.Count > 2) { spikesSettings.Value[2] = spikesSettings.Value[2] / Rescale; } } // Save Rescaled Scatterer Settings if (flareSettings?.Value?.Count > 2) { star.RemoveValues("flareSettings"); star.AddValue("flareSettings", string.Join(",", flareSettings.Value.Select(p => p.ToString()).ToArray())); } if (spikesSettings?.Value?.Count > 2) { star.RemoveValues("spikesSettings"); star.AddValue("spikesSettings", string.Join(",", spikesSettings.Value.Select(p => p.ToString()).ToArray())); } if (sunGlareFadeDistance != 0) { star.RemoveValues("sunGlareFadeDistance"); star.AddValue("sunGlareFadeDistance", sunGlareFadeDistance); } } } DestroyImmediate(this); }
protected override void BuildDialog() { // Skin Skin = KittopiaTech.Skin; // Build a list of collection elements NumericCollectionParser <TNum> collectionParser = (NumericCollectionParser <TNum>)GetValue(); // Display a scroll area GUIScrollList(new Vector2(290, 400), false, true, () => { GUIVerticalLayout(true, false, 2f, new RectOffset(8, 26, 8, 8), TextAnchor.UpperLeft, () => { GUIContentSizer(ContentSizeFitter.FitMode.Unconstrained, ContentSizeFitter.FitMode.PreferredSize, true); // Use a box as a seperator GUISpace(5f); GUIBox(-1f, 1f, () => { }); GUISpace(5f); // Display all elements for (Int32 j = 0; j < collectionParser.Value.Count; j++) { Int32 i = j; // Add / Remove Buttons GUIHorizontalLayout(() => { GUIFlexibleSpace(); GUIButton("V", () => { TNum tmp = collectionParser.Value[i]; collectionParser.Value[i] = collectionParser.Value[i - 1]; collectionParser.Value[i - 1] = tmp; SetValue(collectionParser); }, 25f, 25f, false, () => { }, Enabled <DialogGUIButton>(() => i != 0).And(Rotation <DialogGUIButton>(180, 0, 0)) .And(Scale <DialogGUIButton>(0.7f))); GUIButton("V", () => { TNum tmp = collectionParser.Value[i]; collectionParser.Value[i] = collectionParser.Value[i + 1]; collectionParser.Value[i + 1] = tmp; SetValue(collectionParser); }, 25f, 25f, false, () => { }, Enabled <DialogGUIButton>(() => i != collectionParser.Value.Count - 1) .And(Scale <DialogGUIButton>(0.7f))); GUIButton("+", () => { collectionParser.Value.Insert(i, default(TNum)); SetValue(collectionParser); Redraw(); }, 25f, 25f, false, () => { }); GUIButton("x", () => { collectionParser.Value.RemoveAt(i); SetValue(collectionParser); Redraw(); }, 25f, 25f, false, () => { }); }); // Display the editor Integrate((ValueEditor)Activator.CreateInstance(typeof(TEd), _name + " - I:" + i, new Func <Object>(() => Reference), new Func <Object>(() => collectionParser.Value[i]), new Action <Object>(s => { collectionParser.Value[i] = (NumericParser <TNum>)s; SetValue(collectionParser); }) )); // Use a box as a seperator GUISpace(5f); GUIBox(-1f, 1f, () => { }); GUISpace(5f); } if (collectionParser.Value.Count == 0) { // Add / Remove Buttons GUIHorizontalLayout(() => { GUIButton("+", () => { collectionParser.Value.Insert(collectionParser.Value.Count, default(TNum)); SetValue(collectionParser); Redraw(); }, 25f, 25f, false, () => { }); }); // Use a box as a seperator GUISpace(5f); GUIBox(-1f, 1f, () => { }); GUISpace(5f); } }); }); }
// Readers List<double[]> ReadCurve(FloatCurve curve) { ConfigNode config = new ConfigNode(); List<double[]> list = new List<double[]>(); NumericCollectionParser<double> value = new NumericCollectionParser<double>(); curve.Save(config); foreach (string k in config.GetValues("key")) { value.SetFromString(k); list.Add(value.value.ToArray()); } return list; }