コード例 #1
0
            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();
                }
            }
コード例 #2
0
        // 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);
        }
コード例 #3
0
            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();
            }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
                    }
                });
            });
        }
コード例 #6
0
        // 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;
        }