Ejemplo n.º 1
0
        /// <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;
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 4
0
        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;
            }
        }
Ejemplo n.º 6
0
        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();
            }
        }