/// <summary> /// Initialize the UI comoponents, do localization, set up styles /// </summary> protected virtual void InitUI() { if (Settings.DebugUIMode) { Utils.Log("[UI]: Initializing"); } resources = new UIResources(); initUI = true; }
public static bool IconButton(Rect buttonRect, string buttonIconName, string buttonStyleName) { bool state = false; if (GUI.Button(buttonRect, "", UIResources.GetStyle(buttonStyleName))) { state = true; } if (UIResources.GetIcon(buttonIconName).iconAtlas != null) { GUI.DrawTextureWithTexCoords(buttonRect, UIResources.GetIcon(buttonIconName).iconAtlas, UIResources.GetIcon(buttonIconName).iconRect); } return(state); }
/// <summary> /// Draws the title panel (title, close button) /// </summary> protected virtual void DrawTitle() { GUILayout.BeginHorizontal(); GUILayout.Label(windowTitle, UIResources.GetStyle("window_header"), GUILayout.MaxHeight(26f), GUILayout.MinHeight(26f), GUILayout.MinWidth(350f)); GUILayout.FlexibleSpace(); var buttonRect = GUILayoutUtility.GetRect(22f, 22f); GUI.color = UIResources.GetColor("cancel_color"); if (GUI.Button(buttonRect, "", UIResources.GetStyle("button_cancel"))) { ToggleWindow(); } GUI.DrawTextureWithTexCoords(buttonRect, UIResources.GetIcon("cancel").iconAtlas, UIResources.GetIcon("cancel").iconRect); GUI.color = Color.white; GUILayout.EndHorizontal(); }
protected void DrawTitle() { GUILayout.BeginHorizontal(); GUILayout.Label(windowTitle, UIResources.GetStyle("window_header"), GUILayout.MaxHeight(26f), GUILayout.MinHeight(26f)); GUILayout.FlexibleSpace(); Rect buttonRect = GUILayoutUtility.GetRect(22f, 22f); GUI.color = UIResources.GetColor("cancel_color"); if (UIUtils.IconButton(buttonRect, "cancel", "button_cancel")) { ToggleWindow(); } GUI.color = Color.white; GUILayout.EndHorizontal(); }
protected void DrawAdd() { GUILayout.BeginHorizontal(); GUILayout.Label("Effect Name", GUILayout.Width(160f)); newEffectName = GUILayout.TextArea(newEffectName, GUILayout.Width(200f)); GUILayout.Space(250f); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Effect Parent [required]", GUILayout.Width(160f)); parentName = GUILayout.TextArea(parentName, GUILayout.Width(200f)); if (parentErrorString != "") { GUILayout.Label($"<color=#FF0000>{parentErrorString}</color>", GUILayout.Width(250f)); } else { GUILayout.Space(250f); } GUILayout.EndHorizontal(); GUILayout.Label("<b>SELECT WORKFLOW</b>", GUILayout.Width(120f)); int newFlag = GUILayout.SelectionGrid(workflowFlag, workflowOptions, Mathf.Min(workflowOptions.Length, 4), UIResources.GetStyle("radio_text_button")); if (newFlag != workflowFlag) { workflowFlag = newFlag; var modelOpts = new List <string>(); models = WaterfallAssets.GetModels((AssetWorkflow)Enum.Parse(typeof(AssetWorkflow), workflowOptions[workflowFlag])); foreach (var w in models) { modelOpts.Add($"<b>{w.Name}</b>\n{w.Description}\n{w.Path}"); } modelOptions = modelOpts.ToArray(); var shaderOpts = new List <string>(); shaders = WaterfallAssets.GetShaders((AssetWorkflow)Enum.Parse(typeof(AssetWorkflow), workflowOptions[workflowFlag])); foreach (var w in shaders) { shaderOpts.Add($"<b>{w.Name}</b>\n{w.Description}"); } shaderOptions = shaderOpts.ToArray(); modelFlag = 0; shaderFlag = 0; } GUILayout.BeginVertical(GUI.skin.textArea); GUILayout.BeginHorizontal(); GUILayout.Label("<b>Model</b>", GUILayout.Width(120f)); modelFlag = GUILayout.SelectionGrid(modelFlag, modelOptions, Mathf.Min(modelOptions.Length, 2), UIResources.GetStyle("radio_text_button")); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("<b>Shader</b>", GUILayout.Width(120f)); shaderFlag = GUILayout.SelectionGrid(shaderFlag, shaderOptions, Mathf.Min(shaderOptions.Length, 2), UIResources.GetStyle("radio_text_button")); GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUILayout.BeginHorizontal(); randomizeSeed = GUILayout.Toggle(randomizeSeed, "Randomize Effect Seed"); GUILayout.EndHorizontal(); if (GUILayout.Button("Add")) { var modelXforms = module.GetComponentsInChildren <Transform>(); if (parentName == "") { parentErrorString = "Please specify a valid Transform name"; } else if (modelXforms.ToList().FindAll(x => x.name == parentName).Any()) { module.AddEffect(CreateNewEffect()); WaterfallUI.Instance.RefreshEffectList(); showWindow = false; } else { parentErrorString = $"{parentName} is not a valid Transform on this part"; } } if (GUILayout.Button("Cancel")) { showWindow = false; } }
protected void DrawAdd() { GUILayout.BeginHorizontal(); GUILayout.Label("Modifier name"); newModifierName = GUILayout.TextArea(newModifierName); GUILayout.EndHorizontal(); GUILayout.Label("Modifier type"); int modiferFlagChanged = GUILayout.SelectionGrid(modifierFlag, modifierTypes, Mathf.Min(modifierTypes.Length, 4), UIResources.GetStyle("radio_text_button")); if (modiferFlagChanged != modifierFlag) { modifierFlag = modiferFlagChanged; if (modifierTypes[modifierFlag].Contains("Material")) { var xFormOptions = effect.GetModelTransforms()[0].GetComponentsInChildren <Renderer>().ToList(); transformOptions = new string[xFormOptions.Count]; for (int i = 0; i < xFormOptions.Count; i++) { transformOptions[i] = xFormOptions[i].gameObject.name; } } else if (modifierTypes[modifierFlag].Contains("Light")) { var xFormOptions = effect.GetModelTransforms()[0].GetComponentsInChildren <Light>().ToList(); transformOptions = new string[xFormOptions.Count]; for (int i = 0; i < xFormOptions.Count; i++) { transformOptions[i] = xFormOptions[i].gameObject.name; } } else { var xFormOptions = effect.GetModelTransforms()[0].GetComponentsInChildren <Transform>().ToList(); transformOptions = new string[xFormOptions.Count]; for (int i = 0; i < xFormOptions.Count; i++) { transformOptions[i] = xFormOptions[i].name; } } transformFlag = 0; } GUILayout.Label("Target transform name"); transformFlag = GUILayout.SelectionGrid(transformFlag, transformOptions, Mathf.Min(transformOptions.Length, 3), UIResources.GetStyle("radio_text_button")); GUILayout.BeginHorizontal(); GUILayout.Label("Controller name"); controllerFlag = GUILayout.SelectionGrid(controllerFlag, controllerTypes, Mathf.Min(controllerTypes.Length, 4), UIResources.GetStyle("radio_text_button")); GUILayout.EndHorizontal(); if (GUILayout.Button("Add")) { effect.AddModifier(CreateNewModifier()); showWindow = false; } if (GUILayout.Button("Cancel")) { showWindow = false; } }
/// <summary> /// Draws the common header area /// </summary> protected virtual void DrawHeader() { GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); GUILayout.Label($"Transform Target {modifier.transformName}"); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Modifier Name"); modifier.fxName = GUILayout.TextArea(modifier.fxName); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Controller"); controllerFlag = GUILayout.SelectionGrid(controllerFlag, controllerNames, controllerNames.Length, UIResources.GetStyle("radio_text_button")); modifier.controllerName = controllerNames[controllerFlag]; GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Combine Mode"); combineModeFlag = GUILayout.SelectionGrid(combineModeFlag, combineModes, combineModes.Length, UIResources.GetStyle("radio_text_button")); modifier.effectMode = (EffectModifierMode)combineModeFlag; GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); modifier.useRandomness = GUILayout.Toggle(modifier.useRandomness, "Use Randomness"); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (modifier.useRandomness) { GUILayout.Label("Controller"); modifier.randomnessController = GUILayout.TextArea(modifier.randomnessController); GUILayout.Label("Scale"); randomText = GUILayout.TextArea(randomText); if (Single.TryParse(randomText, out modifier.randomScale)) { } } GUILayout.EndHorizontal(); GUILayout.EndVertical(); }
protected void DrawLightEdit() { float headerWidth = 120f; bool delta = false; float sliderVal; string textVal; GUILayout.Label("<b>Light Parameters</b>"); GUILayout.BeginHorizontal(); GUILayout.Label("Light Color", GUILayout.Width(headerWidth)); GUILayout.Space(10); // Button to set that we are toggling the color picker if (GUILayout.Button("", GUILayout.Width(60))) { colorEdit = !colorEdit; Utils.Log($"[CP] Edit flag state {colorEdit}", LogType.UI); // if yes, open the window if (colorEdit) { WaterfallUI.Instance.OpenColorEditWindow(colorValue); Utils.Log("[CP] Open Window", LogType.UI); } } // If picker open if (colorEdit) { // Close all other pickers var c = WaterfallUI.Instance.GetColorFromPicker(); if (!c.IsEqualTo(colorValue)) { colorValue = c; delta = true; } if (delta) { colorTexture = TextureUtils.GenerateColorTexture(64, 32, colorValue); model.SetLightColor(light, colorValue); } } var tRect = GUILayoutUtility.GetLastRect(); tRect = new(tRect.x + 3, tRect.y + 3, tRect.width - 6, tRect.height - 6); GUI.DrawTexture(tRect, colorTexture); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Light Type", GUILayout.Width(headerWidth)); int newFlag = GUILayout.SelectionGrid(typeFlag, typeOptions, 2, UIResources.GetStyle("radio_text_button")); if (newFlag != typeFlag) { typeFlag = newFlag; if (typeFlag == 1) { model.SetLightType(light, LightType.Point); } if (typeFlag == 0) { model.SetLightType(light, LightType.Spot); } } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Intensity", GUILayout.Width(headerWidth)); sliderVal = GUILayout.HorizontalSlider(intensityValue, 0f, 10f); if (sliderVal != intensityValue) { intensityValue = sliderVal; intensityString = sliderVal.ToString(); model.SetLightIntensity(light, intensityValue); } textVal = GUILayout.TextArea(intensityString, GUILayout.Width(90f)); if (textVal != intensityString) { float outVal; if (Single.TryParse(textVal, out outVal)) { intensityValue = outVal; model.SetLightIntensity(light, intensityValue); } intensityString = textVal; } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Range", GUILayout.Width(headerWidth)); sliderVal = GUILayout.HorizontalSlider(rangeValue, 0f, 100f); if (sliderVal != rangeValue) { rangeValue = sliderVal; rangeString = sliderVal.ToString(); model.SetLightRange(light, rangeValue); } textVal = GUILayout.TextArea(rangeString, GUILayout.Width(90f)); if (textVal != rangeString) { float outVal; if (Single.TryParse(textVal, out outVal)) { rangeValue = outVal; model.SetLightRange(light, rangeValue); } rangeString = textVal; } GUILayout.EndHorizontal(); if (typeFlag == 0) { GUILayout.BeginHorizontal(); GUILayout.Label("Spot Angle", GUILayout.Width(headerWidth)); sliderVal = GUILayout.HorizontalSlider(angleValue, 0f, 100f); if (sliderVal != angleValue) { angleValue = sliderVal; angleString = sliderVal.ToString(); model.SetLightAngle(light, angleValue); } textVal = GUILayout.TextArea(angleString, GUILayout.Width(90f)); if (textVal != angleString) { float outVal; if (Single.TryParse(textVal, out outVal)) { angleValue = outVal; model.SetLightAngle(light, angleValue); } angleString = textVal; } GUILayout.EndHorizontal(); } }