Exemple #1
0
        public override void Update()
        {
            return;

            Entity entity   = null;
            var    newModel = entity.Get <ModelComponent>();

            //if (_selectedModel != newModel) _selectedModel?.Materials
            if (newModel != null && _selectedModel != newModel && EffectMaterial != null)
            {
                _selectedModel = newModel;

                for (int i = 0; i < _selectedModel.GetMaterialCount(); i++)
                {
                    //Remove the effect render pass from that other material
                    //TODO: This will lead to issues when the model has multiple materials
                    effectRenderPass.Material.Passes.Remove(effectRenderPass);

                    //Clone the material
                    var clonedMaterial = CloneMaterial(_selectedModel.GetMaterial(i));
                    //Layers ~= render passes
                    //Add the effect render pass to the material
                    clonedMaterial.Passes.Add(
                        effectRenderPass
                        );

                    /*
                     * var clonedPass1 = new MaterialPass(effectMaterial.Passes[0].Parameters);
                     * clonedPass1.HasTransparency = pass.HasTransparency;
                     * clonedPass1.BlendState = pass.BlendState;
                     * clonedPass1.IsLightDependent = pass.IsLightDependent;
                     *
                     * clone.Passes.Add(clonedPass1);
                     */

                    /*var parCol = new ParameterCollection();
                     * //parCol.Set(MaterialKeys.PixelStageSurfaceShaders, (SiliconStudio.Xenko.Shaders.ShaderClassSource)"hi");
                     * parCol.Set(MaterialKeys.DiffuseValue, Color4.White);
                     * clonedMaterial.Passes.Add(new MaterialPass(parCol)
                     *      {
                     *      HasTransparency = true,
                     *      BlendState = new BlendStateDescription(Blend.One, Blend.Zero),
                     *      IsLightDependent = true
                     * });*/

                    //Override the default materials
                    _selectedModel.Materials[i] = clonedMaterial;
                }
            }
        }
        private static bool IsValidMaterialIndex(ModelComponent modelComponent, int materialIndex)
        {
            if (materialIndex < 0)
            {
                return(false);
            }

            int materialCount = modelComponent.GetMaterialCount();

            if (materialCount > 0)
            {
                return(materialIndex < materialCount);
            }
            else
            {
                return(modelComponent.Materials.ContainsKey(materialIndex));
            }
        }