public void AmbientSettingsWithSetNameNull()
        {
            string settingName           = nameof(AmbientSettingsWithSetNameNull) + "-int-setting";
            AmbientSetting <int> setting = new AmbientSetting <int>(settingName, "", s => Int32.Parse(s), "1");

            (int, string)valueWithSetName = setting.GetValueWithSetName();
        }
Beispiel #2
0
    static void ExportLightMap()
    {
        string        sceneName     = GetCurrentSceneName();
        string        abName        = "config/lightmap_" + sceneName;
        LightMapAsset lightmapAsset = ScriptableObject.CreateInstance <LightMapAsset>();

        int count = LightmapSettings.lightmaps.Length;

        lightmapAsset.lightmapFar  = new Texture2D[count];
        lightmapAsset.lightmapNear = new Texture2D[count];

        AmbientSetting am = new AmbientSetting();

        am.useFog                    = RenderSettings.fog;
        am.fogMode                   = RenderSettings.fogMode;
        am.fogColor                  = RenderSettings.fogColor;
        am.fogEndDistance            = RenderSettings.fogEndDistance;
        am.fogStartDistance          = RenderSettings.fogStartDistance;
        am.fogMode                   = RenderSettings.fogMode;
        am.ambientColor              = RenderSettings.ambientLight;
        lightmapAsset.ambientSetting = am;
        for (int i = 0; i < count; i++)
        {
            lightmapAsset.lightmapFar[i]  = LightmapSettings.lightmaps[i].lightmapColor;
            lightmapAsset.lightmapNear[i] = LightmapSettings.lightmaps[i].lightmapDir;
        }
        string path = ("Assets/GameResources/ArtResources/SceneConfig/LightMap/lightmap_" + sceneName.ToLower() + ".asset");

        AssetDatabase.CreateAsset(lightmapAsset, path);
        AssetImporter assetImporter = AssetImporter.GetAtPath(path);

        assetImporter.assetBundleName = abName;
    }
        public void SettingsInfo()
        {
            string   settingName = nameof(SettingsInfo);
            DateTime start       = AmbientClock.UtcNow;
            AmbientSetting <string> testSetting = new AmbientSetting <string>(settingName, "", s => s, "default value");

            foreach (IAmbientSettingInfo info in SettingsRegistry.DefaultRegistry.Settings)
            {
                if (String.Equals(settingName, info.Key))
                {
                    Assert.IsTrue(info.LastUsed == DateTime.MinValue);
                    Assert.IsTrue(String.IsNullOrEmpty(info.Description));
                    Assert.AreEqual("default value", info.DefaultValueString);
                    Assert.AreEqual("default value", (string)info.DefaultValue);
                }
            }
            Assert.AreEqual("default value", testSetting.Value);
            foreach (IAmbientSettingInfo info in SettingsRegistry.DefaultRegistry.Settings)
            {
                if (String.Equals(settingName, info.Key))
                {
                    Assert.IsTrue(info.LastUsed >= start);
                    Assert.IsTrue(String.IsNullOrEmpty(info.Description));
                    Assert.AreEqual("default value", info.DefaultValueString);
                    Assert.AreEqual("default value", (string)info.DefaultValue);
                }
            }
        }
        public void SettingLocalChangeSettingsSet()
        {
            IMutableAmbientSettingsSet settingsSet = new BasicAmbientSettingsSet(nameof(SettingLocalChangeSettingsSet));

            using (new ScopedLocalServiceOverride <IMutableAmbientSettingsSet>(settingsSet))
                using (new ScopedLocalServiceOverride <IAmbientSettingsSet>(settingsSet))
                {
                    string testSettingKey               = nameof(SettingLocalChangeSettingsSet);
                    string initialValue                 = "initialValue";
                    string notificationNewValue         = "";
                    AmbientSetting <string> testSetting = new AmbientSetting <string>(testSettingKey, "", s => { notificationNewValue = s; return(s); }, initialValue);
                    Assert.AreEqual(initialValue, testSetting.Value);
                    Assert.AreEqual(initialValue, notificationNewValue);

                    // now switch local settings set and try again
                    string secondValue = "change1";
                    IMutableAmbientSettingsSet settingsSet2 = new BasicAmbientSettingsSet(nameof(SettingLocalChangeSettingsSet) + "_2");
                    using (new ScopedLocalServiceOverride <IMutableAmbientSettingsSet>(settingsSet2))
                        using (new ScopedLocalServiceOverride <IAmbientSettingsSet>(settingsSet2))
                        {
                            settingsSet2.ChangeSetting(testSettingKey, secondValue);
                            Assert.AreEqual(secondValue, testSetting.Value);
                            Assert.AreEqual(secondValue, notificationNewValue);
                        }
                }
        }
        public void SettingGlobalValueChangeNotification()
        {
            string testSettingKey               = nameof(SettingGlobalValueChangeNotification);
            string initialValue                 = "initialValue";
            string notificationNewValue         = "";
            AmbientSetting <string> testSetting = new AmbientSetting <string>(testSettingKey, "", s => { notificationNewValue = s; return(s); }, initialValue);

            Assert.AreEqual(initialValue, testSetting.Value);
            string secondValue = "change1";

            Assert.AreEqual(initialValue, notificationNewValue);
            IAmbientSettingsSet        settingsReader  = _SettingsSet.Global;
            IMutableAmbientSettingsSet settingsMutator = settingsReader as IMutableAmbientSettingsSet;

            if (settingsMutator != null)
            {
                settingsMutator.ChangeSetting(testSettingKey, secondValue);
                Assert.AreEqual(secondValue, testSetting.Value);
                Assert.AreEqual(secondValue, notificationNewValue);
                // now change it to the same value it already has (this should not do anything)
                notificationNewValue = "";
                bool changed = settingsMutator.ChangeSetting(testSettingKey, secondValue);
                Assert.AreEqual(secondValue, testSetting.Value);
                Assert.AreEqual("", notificationNewValue, changed.ToString());
            }
        }
        public void AmbientSettingInt()
        {
            // use a local override in case we ran another test that left the global or local settings set set to something else on this thread
            BasicAmbientSettingsSet settings = new BasicAmbientSettingsSet(nameof(AmbientSettingInt));

            using (ScopedLocalServiceOverride <IAmbientSettingsSet> localOverrideTest = new ScopedLocalServiceOverride <IAmbientSettingsSet>(settings))
            {
                AmbientSetting <int> value;
                value = new AmbientSetting <int>("int-setting", "", s => string.IsNullOrEmpty(s) ? 0 : Int32.Parse(s));
                Assert.AreEqual(0, value.Value);
                value = new AmbientSetting <int>("int-setting-2", "", s => Int32.Parse(s), "1");
                Assert.AreEqual(1, value.Value);
                value = new AmbientSetting <int>("int-setting-3", "", s => Int32.Parse(s), "1");
                Assert.AreEqual(1, value.Value);

                // test changing the setting without an event listener
                settings.ChangeSetting("int-setting-3", "5");
                // test changing the setting to the same value without an event listener
                settings.ChangeSetting("int-setting-3", "5");
                // test changing the setting to null so we fall through to the global settings set
                settings.ChangeSetting("int-setting-3", null);
                int settingValue = value.Value;
                Assert.AreEqual(1, value.Value);
            }
        }
 public void NoAmbientSetting()
 {
     using (ScopedLocalServiceOverride <IAmbientSettingsSet> localOverrideTest = new ScopedLocalServiceOverride <IAmbientSettingsSet>(null))
     {
         AmbientSetting <int> value;
         value = new AmbientSetting <int>("int-setting", "", s => string.IsNullOrEmpty(s) ? 0 : Int32.Parse(s));
         Assert.AreEqual(0, value.Value);
         value = new AmbientSetting <int>("int-setting-2", "", s => Int32.Parse(s), "1");
         Assert.AreEqual(1, value.Value);
         value = new AmbientSetting <int>("int-setting-4", "", s => Int32.Parse(s), "-1");
         Assert.AreEqual(-1, value.Value);
         SettingsSetSetting <int> settingsSetSetting = new SettingsSetSetting <int>(_SettingsSet, nameof(NoAmbientSetting) + "4", "", s => Int32.Parse(s), "4");
         Assert.AreEqual(4, settingsSetSetting.Value);
     }
 }
        public void SettingGlobalSettingsSetChangeNotification()
        {
            AmbientService <IAmbientSettingsSet> pretendGlobalSettings = new AmbientService <IAmbientSettingsSet>();

            string testSettingKey = nameof(SettingGlobalSettingsSetChangeNotification);
            string defaultValue   = "defaultValue";
            string overrideValue  = "overrideSettingsSetValue";
            Dictionary <string, string> overrides = new Dictionary <string, string>()
            {
                { testSettingKey, overrideValue }
            };
            string notificationNewValue         = "";
            AmbientSetting <string> testSetting = new AmbientSetting <string>(pretendGlobalSettings, testSettingKey, "", s => { notificationNewValue = s; return(s); }, defaultValue);

            Assert.AreEqual(defaultValue, testSetting.Value);

            AmbientSettingsOverride pretendGlobalSettingsImplementation = new AmbientSettingsOverride(overrides, nameof(SettingGlobalSettingsSetChangeNotification), null, pretendGlobalSettings);

            pretendGlobalSettings.Global = pretendGlobalSettingsImplementation;

            Assert.AreEqual(overrideValue, testSetting.Value);
            Assert.AreEqual(overrideValue, notificationNewValue);

            IMutableAmbientSettingsSet globalSettingsSet = pretendGlobalSettings.Global as IMutableAmbientSettingsSet;

            if (globalSettingsSet != null)
            {
                string valueChangeValue = "valueChange";
                globalSettingsSet.ChangeSetting(testSettingKey, valueChangeValue);
                Assert.AreEqual(valueChangeValue, testSetting.Value);
                Assert.AreEqual(valueChangeValue, notificationNewValue);
            }

            overrides = new Dictionary <string, string>()
            {
                { testSettingKey, overrideValue }
            };
            AmbientSettingsOverride pretendGlobalSettingsSet2 = new AmbientSettingsOverride(overrides, nameof(SettingGlobalSettingsSetChangeNotification), null, pretendGlobalSettings);

            pretendGlobalSettings.Global = pretendGlobalSettingsSet2;
            Assert.AreEqual(overrideValue, testSetting.Value);

            overrides[testSettingKey] = null;
            AmbientSettingsOverride pretendGlobalSettingsSet3 = new AmbientSettingsOverride(overrides, nameof(SettingGlobalSettingsSetChangeNotification), null, pretendGlobalSettings);

            pretendGlobalSettings.Global = pretendGlobalSettingsSet3;
            Assert.AreEqual(defaultValue, testSetting.Value);
        }
        public void AmbientSettingsWithSetName()
        {
            string settingName            = nameof(AmbientSettingsWithSetName) + "-int-setting";
            AmbientSetting <int> setting3 = new AmbientSetting <int>(settingName, "", s => Int32.Parse(s), "1");

            Assert.AreEqual(1, setting3.Value);
            Assert.IsNotNull(setting3.GetValueWithSetName().Item2);
            IMutableAmbientSettingsSet settingsSet = _SettingsSet.Global as IMutableAmbientSettingsSet;

            if (settingsSet != null)
            {
                settingsSet.ChangeSetting(settingName, "2");
                Assert.AreEqual(2, setting3.Value);
                Assert.AreEqual(BasicAmbientSettingsSet.DefaultSetName, setting3.GetValueWithSetName().Item2);
            }
            // use a local override in case we ran another test that left the global or local settings set set to something else on this thread
            BasicAmbientSettingsSet settings = new BasicAmbientSettingsSet(nameof(AmbientSettingsWithSetName));

            using (ScopedLocalServiceOverride <IAmbientSettingsSet> localOverrideTest = new ScopedLocalServiceOverride <IAmbientSettingsSet>(settings))
            {
                AmbientSetting <int> setting;
                setting = new AmbientSetting <int>(nameof(AmbientSettingsWithSetName) + "-int-setting-1", "", s => string.IsNullOrEmpty(s) ? 0 : Int32.Parse(s));
                Assert.AreEqual(0, setting.Value);
                Assert.IsNotNull(setting.GetValueWithSetName().Item2);
                setting = new AmbientSetting <int>(nameof(AmbientSettingsWithSetName) + "-int-setting-2", "", s => Int32.Parse(s), "1");
                settings.ChangeSetting(nameof(AmbientSettingsWithSetName) + "-int-setting-2", "1");
                Assert.AreEqual(1, setting.Value);
                Assert.AreEqual(nameof(AmbientSettingsWithSetName), setting.GetValueWithSetName().Item2);
                setting = new AmbientSetting <int>(settingName, "", s => Int32.Parse(s), "1");
                settings.ChangeSetting(settingName, "3");
                Assert.AreEqual(3, setting3.Value);
                Assert.AreEqual(nameof(AmbientSettingsWithSetName), setting3.GetValueWithSetName().Item2);

                // test changing the setting to null so we fall through to the global settings set
                settings.ChangeSetting(settingName, null);
                int settingValue = setting.Value;
                Assert.AreEqual(1, setting.Value);
                Assert.IsNotNull(setting3.GetValueWithSetName().Item2);
            }
        }