private void Textbox_TextChanged(object sender, System.EventArgs e)
        {
            TextBox          tb = sender as TextBox;
            UITexture2DParam p  = tb.Tag as UITexture2DParam;

            p.Value = tb.Text;
        }
Exemplo n.º 2
0
        /// <summary>
        /// 更新参数列表UI
        /// </summary>
        /// <param name="strShaderSource"></param>
        private void CreateUIParameters(string strShaderSource)
        {
            Program.s_GameInstance.ShaderParameters.Clear();

            UIBaseParam.ENUM_UIBaseParamType paramType = UIBaseParam.ENUM_UIBaseParamType.eUnknow;
            int idxStart  = 0;
            int idxSource = 0;

            // 第一轮查找Float
            while (idxSource != -1)
            {
                paramType = UIBaseParam.ENUM_UIBaseParamType.eUnknow;

                //Get FloatParam
                idxStart = strShaderSource.IndexOf("FloatParam", idxSource);
                if (idxStart != -1)
                {
                    paramType = UIBaseParam.ENUM_UIBaseParamType.eFloat;
                }

                if (paramType == UIBaseParam.ENUM_UIBaseParamType.eUnknow)
                {
                    break;
                }

                // 找到行尾
                int idxEnd = strShaderSource.IndexOf("\n", idxStart);
                if (idxEnd == -1)
                {
                    break;
                }

                idxSource = idxEnd;

                // 获取本行
                var line = strShaderSource.Substring(idxStart, idxEnd - idxStart);

                //Inputs Part
                idxStart = line.IndexOf("(");
                if (idxStart == -1)
                {
                    break;
                }

                idxEnd = line.IndexOf(")");
                if (idxEnd == -1)
                {
                    break;
                }

                var inputs = line.Substring(idxStart + 1, idxEnd - idxStart - 1);
                inputs = inputs.Replace(" ", "");

                //Egal Part
                idxStart = line.IndexOf("=");
                if (idxStart == -1)
                {
                    break;
                }

                //Value Part
                var value = line.Substring(idxStart + 1);
                value = value.Replace(" ", "");

                //Add Param
                if (paramType == UIBaseParam.ENUM_UIBaseParamType.eFloat)
                {
                    UIFloatParam p = UIFloatParam.FromString(inputs, value);
                    if (p != null)
                    {
                        Program.s_GameInstance.ShaderParameters.Add(p);
                    }
                }
            }
            ;

            // 第二轮,找Texture2D
            paramType = UIBaseParam.ENUM_UIBaseParamType.eUnknow;
            idxStart  = 0;
            idxSource = 0;

            while (idxSource != -1)
            {
                paramType = UIBaseParam.ENUM_UIBaseParamType.eUnknow;

                idxStart = strShaderSource.IndexOf("Texture2DParam", idxSource);
                if (idxStart != -1)
                {
                    paramType = UIBaseParam.ENUM_UIBaseParamType.Texture2D;
                }

                if (paramType == UIBaseParam.ENUM_UIBaseParamType.eUnknow)
                {
                    break;
                }

                // 找到行尾
                int idxEnd = strShaderSource.IndexOf("\n", idxStart);
                if (idxEnd == -1)
                {
                    break;
                }

                //Update for next line
                idxSource = idxEnd;

                // 获取本行
                var line = strShaderSource.Substring(idxStart, idxEnd - idxStart);

                //Inputs Part
                idxStart = line.IndexOf("(");
                if (idxStart == -1)
                {
                    break;
                }

                idxEnd = line.IndexOf(")");
                if (idxEnd == -1)
                {
                    break;
                }

                var inputs = line.Substring(idxStart + 1, idxEnd - idxStart - 1);
                inputs = inputs.Replace(" ", "");

                //Egal Part
                idxStart = line.IndexOf("=");
                if (idxStart == -1)
                {
                    break;
                }

                //Value Part
                var value = line.Substring(idxStart + 1);
                value = value.Replace(" ", "");

                //Add Param
                if (paramType == UIBaseParam.ENUM_UIBaseParamType.Texture2D)
                {
                    UITexture2DParam p = UITexture2DParam.FromString(inputs, value);
                    if (p != null)
                    {
                        Program.s_GameInstance.ShaderParameters.Add(p);
                    }
                }
            }
            ;

            // 更新UI显示
            ShaderParametersUserControl.DisplayParameters(Program.s_GameInstance.ShaderParameters);
        }