コード例 #1
0
        public string AddParameters(string fileName, string effectShortName, int partIndex)
        {
            if (!mEffectParameters.ContainsKey(effectShortName))
            {
                throw new ArgumentException("The specified effect has not been stored, can not add parameters");
            }

            // Load the parameters
            EffectParameterListSave list = EffectParameterListSave.FromFile(fileName);

            // Store the short name
            string shortName = ShortName(fileName);

            mParametersFilenames.Add(shortName, fileName);

            // Store the parameters
            mParametersDictionary.Add(shortName, list);

            // Add to the effect's list
            mEffectParameters[effectShortName].Add(shortName);

            // Set parameters if needed
            if (partIndex >= 0)
            {
                SetPartParameters(partIndex, shortName);
            }

            // Return the short name
            return(shortName);
        }
コード例 #2
0
        public void SetDefaults()
        {
            EffectName = string.Empty;
            ParametersName = string.Empty;

            Effect = DefaultEffect;
            Parameters = DefaultParameters;
        }
コード例 #3
0
        public PartMaterial(ModelMeshPart part)
        {
            MeshPart = part;
            DefaultEffect = part.Effect;
            DefaultParameters = EffectParameterListSave.FromEffect(part.Effect);

            SetDefaults();
        }
コード例 #4
0
        public void SetDefaults()
        {
            EffectName     = string.Empty;
            ParametersName = string.Empty;

            Effect     = DefaultEffect;
            Parameters = DefaultParameters;
        }
コード例 #5
0
        public PartMaterial(ModelMeshPart part)
        {
            MeshPart          = part;
            DefaultEffect     = part.Effect;
            DefaultParameters = EffectParameterListSave.FromEffect(part.Effect);

            SetDefaults();
        }
コード例 #6
0
        public void SetPartParameters(int partIndex, string parametersShortName)
        {
            PartMaterial            part = mParts[partIndex];
            EffectParameterListSave list = mParametersDictionary[parametersShortName];

            // Store parameters and apply them to effect
            part.ParametersName = parametersShortName;
            part.Parameters     = list;
            list.ApplyTo(part.Effect);
        }
コード例 #7
0
        public void SetPartEffect(int partIndex, string effectShortName)
        {
            PartMaterial part   = mParts[partIndex];
            Effect       effect = mEffectDictionary[effectShortName].Clone(FlatRedBallServices.GraphicsDevice);

            // Store effect
            part.EffectName      = effectShortName;
            part.Effect          = effect;
            part.MeshPart.Effect = effect;

            // Load effect default parameters (or add non-saved parameters if none exist)
            if (HasParameters(effectShortName))
            {
                string parametersShortName = mEffectParameters[effectShortName][0];
                SetPartParameters(partIndex, parametersShortName);
            }
            else
            {
                part.ParametersName = string.Empty;
                part.Parameters     = EffectParameterListSave.FromEffect(effect);
            }
        }
コード例 #8
0
ファイル: Form1.cs プロジェクト: profexorgeek/FlatRedBall
        private void parametersBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Get the parameters name
            int    partIndex      = meshPartBox.SelectedIndex;
            string parametersName = (string)parametersBox.Items[parametersBox.SelectedIndex];

            if (parametersName == DefaultParametersString)
            {
                // Set default parameters
                mMaterial.SetPartDefaultParameters(partIndex);
                effectPropGrid.Refresh();
            }
            else if (parametersName == NewParametersString)
            {
                // Create new parameters
                if (saveParxFileDialog.ShowDialog() == DialogResult.OK)
                {
                    string fileName = saveParxFileDialog.FileName;
                    EffectParameterListSave list = EffectParameterListSave.FromEffect(mMaterial.Parts[partIndex].Effect);

                    // Save the file
                    list.Save(fileName);

                    // Add the file
                    mMaterial.AddParameters(fileName, mMaterial.Parts[partIndex].EffectName, partIndex);

                    // Recreate the parameters list
                    CreateParametersList(mMaterial.Parts[partIndex].EffectName);
                }
            }
            else
            {
                // Set parameters on part
                mMaterial.SetPartParameters(partIndex, parametersName);
                effectPropGrid.Refresh();
            }
        }