private void RestoreSharedMaterial(Renderer renderer, string propertyName, GlueMaterialPropertyType type, int materialSlot) { if (type.Equals(GlueMaterialPropertyType.Float)) { var restored = materialDescriptor.backupVector[0]; renderer.sharedMaterials[materialSlot].SetFloat(propertyName, restored); } if (type.Equals(GlueMaterialPropertyType.Vector)) { var restored = materialDescriptor.backupVector; renderer.sharedMaterials[materialSlot].SetVector(propertyName, restored); } if (type.Equals(GlueMaterialPropertyType.Color)) { var restored = materialDescriptor.backupColor; renderer.sharedMaterials[materialSlot].SetColor(propertyName, restored); } materialDescriptor.isBackuped = false; }
private void UpdateFromOverwrite(Renderer renderer, string propertyName, GlueMaterialPropertyType type, int materialSlot) { if (materialSlot >= renderer.sharedMaterials.Length) { return; } var hasProperty = renderer.sharedMaterials[materialSlot]?.HasProperty(propertyName); if ((bool)!hasProperty) { return; } if (type.Equals(GlueMaterialPropertyType.Float)) { var overwriteValue = materialDescriptor.overwriteVector[0]; if (_useSharedMaterial && !materialDescriptor.isBackuped) { materialDescriptor.backupVector[0] = renderer.sharedMaterials[materialSlot].GetFloat(propertyName); materialDescriptor.isBackuped = true; } if (_useSharedMaterial) { renderer.sharedMaterials[materialSlot].SetFloat(propertyName, overwriteValue); } else { _materialPropertyBlock.SetFloat(propertyName, overwriteValue); } } if (type.Equals(GlueMaterialPropertyType.Color)) { var overwriteColor = materialDescriptor.overwriteColor; if (_useSharedMaterial && !materialDescriptor.isBackuped) { materialDescriptor.backupColor = renderer.sharedMaterials[materialSlot].GetColor(propertyName); materialDescriptor.isBackuped = true; } if (_useSharedMaterial) { renderer.sharedMaterials[materialSlot].SetColor(propertyName, overwriteColor); } else { _materialPropertyBlock.SetColor(propertyName, overwriteColor); } } if (type.Equals(GlueMaterialPropertyType.Vector)) { var overwriteVector = materialDescriptor.overwriteVector; if (_useSharedMaterial && !materialDescriptor.isBackuped) { materialDescriptor.backupVector = renderer.sharedMaterials[materialSlot].GetVector(propertyName); materialDescriptor.isBackuped = true; } if (_useSharedMaterial) { renderer.sharedMaterials[materialSlot].SetColor(propertyName, overwriteVector); } else { _materialPropertyBlock.SetVector(propertyName, overwriteVector); } } if (!_useSharedMaterial) { renderer.SetPropertyBlock(_materialPropertyBlock, materialSlot); } }
private void UpdateFromGlue(Renderer renderer, string propertyName, GlueMaterialPropertyType type, int materialSlot) { if (key == "") { return; } if (materialSlot >= renderer.sharedMaterials.Length) { return; } if (type.Equals(GlueMaterialPropertyType.Float)) { float[] fallback = { _fallback[0].X }; float[] uv = GlueValue(fallback); _fallback[0].X = uv[0]; if (_useSharedMaterial) { renderer.sharedMaterials[materialSlot]?.SetFloat(propertyName, uv[0]); } else { _materialPropertyBlock.SetFloat(propertyName, uv[0]); } } if (type.Equals(GlueMaterialPropertyType.Color)) { SharpDX.Vector4[] v = GlueValue(_fallback); _fallback[0] = v[0]; Vector4 uv = new Vector4(); Utils.DXToUnityVector4(v[0], ref uv); if (_useSharedMaterial) { renderer.sharedMaterials[materialSlot]?.SetColor(propertyName, uv); } else { _materialPropertyBlock.SetColor(propertyName, uv); } } if (type.Equals(GlueMaterialPropertyType.Vector)) { SharpDX.Vector4[] v = GlueValue(_fallback); _fallback[0] = v[0]; Vector4 uv = new Vector4(); Utils.DXToUnityVector4(v[0], ref uv); if (_useSharedMaterial) { renderer.sharedMaterials[materialSlot]?.SetVector(propertyName, uv); } else { _materialPropertyBlock.SetVector(propertyName, uv); } } if (!_useSharedMaterial) { renderer.SetPropertyBlock(_materialPropertyBlock, materialSlot); } }