public PartMaterial(ModelMeshPart part) { MeshPart = part; DefaultEffect = part.Effect; DefaultParameters = EffectParameterListSave.FromEffect(part.Effect); SetDefaults(); }
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); } }
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(); } }