public static IList <Material> GetMaterialsToHide(DAZSkinV2 skin) { #if (POV_DIAGNOSTICS) if (skin == null) { throw new NullReferenceException("skin is null"); } if (skin.GPUmaterials == null) { throw new NullReferenceException("skin materials are null"); } #endif var materials = new List <Material>(MaterialsToHide.Length); foreach (var material in skin.GPUmaterials) { if (!MaterialsToHide.Any(materialToHide => material.name.StartsWith(materialToHide))) { continue; } materials.Add(material); } #if (POV_DIAGNOSTICS) // NOTE: Tear is not on all models if (materials.Count < MaterialsToHide.Length - 1) { throw new Exception("Not enough materials found to hide. List: " + string.Join(", ", skin.GPUmaterials.Select(m => m.name).ToArray())); } #endif return(materials); }
public static IList <Material> GetMaterialsToHide(DAZSkinV2 skin) { var materials = new List <Material>(_materialsToHide.Length); foreach (var material in skin.GPUmaterials) { if (material == null) { continue; } if (!_materialsToHide.Any(materialToHide => material.name.StartsWith(materialToHide))) { continue; } materials.Add(material); } return(materials); }
public int Configure(DAZSkinV2 skin) { _skin = skin; _materialRefs = new List <SkinShaderMaterialReference>(); foreach (var material in GetMaterialsToHide(skin)) { #if (IMPROVED_POV) if (material == null) { throw new InvalidOperationException("Attempts to apply the shader strategy on a destroyed material."); } if (material.GetInt(SkinShaderMaterialReference.ImprovedPovEnabledShaderKey) == 1) { throw new InvalidOperationException("Attempts to apply the shader strategy on a skin that already has the plugin enabled (shader key)."); } #endif var materialInfo = SkinShaderMaterialReference.FromMaterial(material); Shader shader; if (!ReplacementShaders.TryGetValue(material.shader.name, out shader)) { SuperController.LogError("Missing replacement shader: '" + material.shader.name + "'"); } if (shader != null) { material.shader = shader; } _materialRefs.Add(materialInfo); } // This is a hack to force a refresh of the shaders cache skin.BroadcastMessage("OnApplicationFocus", true); return(HandlerConfigurationResult.Success); }
public SkinHandler(DAZSkinV2 skin, IEnumerable <string> materialsToHide, int materialsToHideMax) { _skin = skin; _materialsToHide = materialsToHide; _materialsToHideMax = materialsToHideMax; }
public SkinHandler(DAZSkinV2 skin) { _skin = skin; }