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(); }
// 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; }