void Update() { for (int i = 0; i < dst.Length; i++) { MKXRayFreeMaterialHelper.SetEmissionColor(dst[i], MKXRayFreeMaterialHelper.GetEmissionColor(src)); MKXRayFreeMaterialHelper.SetXRayInside(dst[i], MKXRayFreeMaterialHelper.GetXRayInside(src)); MKXRayFreeMaterialHelper.SetXRayRimSize(dst[i], MKXRayFreeMaterialHelper.GetXRayRimSize(src)); } }
public override void AssignNewShaderToMaterial(Material material, Shader oldShader, Shader newShader) { if (material.HasProperty(MKXRayFreeMaterialHelper.PropertyNames.EMISSION)) { MKXRayFreeMaterialHelper.SetEmissionColor(material, material.GetColor(MKXRayFreeMaterialHelper.PropertyNames.EMISSION)); } base.AssignNewShaderToMaterial(material, oldShader, newShader); MaterialProperty[] properties = MaterialEditor.GetMaterialProperties(new Material[] { material }); FindProperties(properties, material); SetGIFlags(); }
//Setup GI emission private void SetGIFlags() { foreach (Material obj in emissionColor.targets) { bool emissive = true; if (MKXRayFreeMaterialHelper.GetEmissionColor(obj) == Color.black) { emissive = false; } MaterialGlobalIlluminationFlags flags = obj.globalIlluminationFlags; if ((flags & (MaterialGlobalIlluminationFlags.BakedEmissive | MaterialGlobalIlluminationFlags.RealtimeEmissive)) != 0) { flags &= ~MaterialGlobalIlluminationFlags.EmissiveIsBlack; if (!emissive) { flags |= MaterialGlobalIlluminationFlags.EmissiveIsBlack; } obj.globalIlluminationFlags = flags; } } }
private void SetValuesFromMaterial() { emissionIntensity = MKXRayFreeMaterialHelper.GetEmissionColor(currentMaterials[currentModel]).r / 2.0f; xRayInside = MKXRayFreeMaterialHelper.GetXRayInside(currentMaterials[currentModel]); xRayRimSize = MKXRayFreeMaterialHelper.GetXRayRimSize(currentMaterials[currentModel]); }