示例#1
0
        void SaveMaterialData(Material mat)
        {
            materialData       = new TVEElementMaterialData();
            materialData.props = new List <TVEElementPropertyData>();

            materialData.shader = mat.shader;

            for (int i = 0; i < ShaderUtil.GetPropertyCount(mat.shader); i++)
            {
                var type = ShaderUtil.GetPropertyType(mat.shader, i);
                var prop = ShaderUtil.GetPropertyName(mat.shader, i);

                if (type == ShaderUtil.ShaderPropertyType.TexEnv)
                {
                    var propData = new TVEElementPropertyData(PropertyType.Texture, prop, mat.GetTexture(prop));
                    materialData.props.Add(propData);
                }

                if (type == ShaderUtil.ShaderPropertyType.Vector || type == ShaderUtil.ShaderPropertyType.Color)
                {
                    var propData = new TVEElementPropertyData(PropertyType.Vector, prop, mat.GetVector(prop));
                    materialData.props.Add(propData);
                }

                if (type == ShaderUtil.ShaderPropertyType.Float || type == ShaderUtil.ShaderPropertyType.Range)
                {
                    var propData = new TVEElementPropertyData(PropertyType.Value, prop, mat.GetFloat(prop));
                    materialData.props.Add(propData);
                }
            }
        }
示例#2
0
        void UpgradeTo150()
        {
            // Update elements to the new save system
            var elements = FindObjectsOfType <TVEElement>();

            for (int i = 0; i < elements.Length; i++)
            {
                var data = elements[i].data;

                if (data != null)
                {
                    if (data.elementShader != null)
                    {
                        var materialData = new TVEElementMaterialData();
                        materialData.props = new List <TVEElementPropertyData>();

                        materialData.shader = data.elementShader;

                        materialData.props.Add(new TVEElementPropertyData(PropertyType.Value, "_ElementIntensity", data.elementIntensity));
                        materialData.props.Add(new TVEElementPropertyData(PropertyType.Value, "_ElementMode", data.elementMode));

                        materialData.props.Add(new TVEElementPropertyData(PropertyType.Texture, "_MainTex", data.mainTex));
                        materialData.props.Add(new TVEElementPropertyData(PropertyType.Vector, "_MainUVs", data.mainUVs));

                        materialData.props.Add(new TVEElementPropertyData(PropertyType.Vector, "_MainColor", data.main));
                        materialData.props.Add(new TVEElementPropertyData(PropertyType.Vector, "_MainColorHDR", data.main));
                        materialData.props.Add(new TVEElementPropertyData(PropertyType.Vector, "_WinterColor", data.winter));
                        materialData.props.Add(new TVEElementPropertyData(PropertyType.Vector, "_SpringColor", data.spring));
                        materialData.props.Add(new TVEElementPropertyData(PropertyType.Vector, "_SummerColor", data.summer));
                        materialData.props.Add(new TVEElementPropertyData(PropertyType.Vector, "_AutumnColor", data.autumn));

                        materialData.props.Add(new TVEElementPropertyData(PropertyType.Value, "_MainValue", data.main.w));
                        materialData.props.Add(new TVEElementPropertyData(PropertyType.Value, "_WinterValue", data.winter.w));
                        materialData.props.Add(new TVEElementPropertyData(PropertyType.Value, "_SpringValue", data.spring.w));
                        materialData.props.Add(new TVEElementPropertyData(PropertyType.Value, "_SummerValue", data.summer.w));
                        materialData.props.Add(new TVEElementPropertyData(PropertyType.Value, "_AutumnValue", data.autumn.w));

                        elements[i].materialData = materialData;
                    }
                }
            }
        }
示例#3
0
        void OnEnable()
        {
            meshRenderer = gameObject.GetComponent <Renderer>();

            if (meshRenderer.sharedMaterial == null || meshRenderer.sharedMaterial.name == "Element")
            {
                if (materialData == null)
                {
                    materialData = new TVEElementMaterialData();
                }

                if (materialData.shader == null)
                {
#if UNITY_EDITOR
                    material = new Material(Resources.Load <Material>("Internal Colors"));
                    SaveMaterialData(material);
#endif
                }
                else
                {
                    material = new Material(materialData.shader);
                    LoadMaterialData();
                }

                material.name = "Element";
                gameObject.GetComponent <Renderer>().sharedMaterial = material;
            }

            if (meshRenderer.sharedMaterial != null)
            {
                shader = meshRenderer.sharedMaterial.shader;

                if (meshRenderer.sharedMaterial.HasProperty(layerProp))
                {
                    layer = meshRenderer.sharedMaterial.GetInt(layerProp);
                }
            }

            AddElementToVolume();
        }