void CheckForBiomeSwitchErrors() { error = false; if (switchMode.ToString().Contains("Custom")) { //TODO: 3d samplers management int index = (switchMode.ToString().Last() - '0'); currentSampler = inputBiome.datas[index]; foreach (var sd in switchDatas) { sd.UpdateSampler(currentSampler); } if (inputBiome.datas[index] == null) { errorString = "can't switch on custom value\nat index " + index + ",\ndata not provided"; error = true; } } else if (switchModeToName.ContainsKey(switchMode)) { var field = inputBiome.GetType().GetField(switchModeToName[switchMode], BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetField); var field3D = inputBiome.GetType().GetField(switchModeToName[switchMode] + "3D", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetField); object val = null, val3D = null; if (field != null) { val = field.GetValue(inputBiome); } if (field3D != null) { val3D = field3D.GetValue(inputBiome); } if (val == null && val3D == null) { errorString = "can't switch on field " + switchModeToName[switchMode] + ",\ndata not provided !"; error = true; } else { currentSampler = ((val == null) ? val3D : val) as Sampler; foreach (var sd in switchDatas) { sd.UpdateSampler(currentSampler); } updatePreview = true; } } }