Beispiel #1
0
 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;
 }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
 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);
     }
 }