예제 #1
0
        // Token: 0x060000D9 RID: 217 RVA: 0x0000AA30 File Offset: 0x00008C30
        public void ChangeShader(string shaderName, int shaderIdx = -1)
        {
            Shader shader = Shader.Find(shaderName);

            if (shader == null)
            {
                LogUtil.Debug(new object[]
                {
                    "Shader not found. load resource :",
                    shaderName
                });
                shader = Resources.Load <Shader>("Shaders/" + shaderName);
                if (shader == null)
                {
                    return;
                }
            }
            int num = this.material.renderQueue;

            this.material.shader      = shader;
            this.material.renderQueue = num;
            ShaderType shaderType = (shaderIdx != -1) ? ShaderType.Resolve(shaderIdx) : ShaderType.Resolve(shaderName);

            if (shaderType == ShaderType.UNKNOWN)
            {
                return;
            }
            this.Update(shaderType);
            LogUtil.Debug(new object[]
            {
                "selected shader updated: ",
                shaderName
            });
        }
예제 #2
0
        public void ChangeShader(string shaderName, int shaderIdx = -1)
        {
            var shader = Shader.Find(shaderName);

            if (shader == null)
            {
                LogUtil.Debug("Shader not found. load resource :", shaderName);
                shader = Resources.Load <Shader>("Shaders/" + shaderName);
                if (shader == null)
                {
                    return;
                }
            }
            ;

            var rq = material.renderQueue;

            material.shader      = shader;
            material.renderQueue = rq;
            var type1 = (shaderIdx != -1) ? ShaderType.Resolve(shaderIdx) : ShaderType.Resolve(shaderName);

            if (type1 == ShaderType.UNKNOWN)
            {
                return;
            }

            Update(type1);
            LogUtil.Debug("selected shader updated: ", shaderName);
        }
예제 #3
0
 // Token: 0x060000D6 RID: 214 RVA: 0x0000A834 File Offset: 0x00008A34
 public ACCMaterial(Material m, Renderer r = null, int idx = -1)
 {
     this.material = m;
     this.renderer = r;
     this.matIdx   = idx;
     this.name     = m.name;
     this.type     = ShaderType.Resolve(m.shader.name);
     if (this.type == ShaderType.UNKNOWN)
     {
         return;
     }
     this.renderQueue.Set((float)m.renderQueue);
     this.rqEdit = this.renderQueue.ToString();
     this.InitType();
 }
        public ACCMaterial(Material m, Renderer r = null)
        {
            this.material = m;
            this.renderer = r;
            name          = m.name;
            type          = ShaderType.Resolve(m.shader.name);
            if (type == ShaderType.UNKNOWN)
            {
                return;
                //throw new Exception("ShaderType has not found:" + m.shader.name);
            }

            renderQueue.Set(m.renderQueue);

            rqEdit = renderQueue.ToString();

            InitType();
        }
예제 #5
0
        public bool Apply(Material m)
        {
            var sh = Shader.Find(shader);

            if (sh == null)
            {
                return(false);
            }

            LogUtil.Debug("apply shader:", sh.name);
            m.shader = sh;
            var type = ShaderType.Resolve(sh.name);

            if (type == ShaderType.UNKNOWN)
            {
                return(false);
            }

            foreach (var colProp in type.colProps)
            {
                Func <CCMaterial, CCColor> func;
                if (COLOR_DIC.TryGetValue(colProp.key, out func))
                {
                    m.SetColor(colProp.propId, func(this).ToColor());
                }
            }

            foreach (var prop in type.fProps)
            {
                Func <CCMaterial, float?> func;
                if (!FLOAT_DIC.TryGetValue(prop.key, out func))
                {
                    continue;
                }

                var fVal = func(this);
                if (fVal.HasValue)
                {
                    m.SetFloat(prop.propId, fVal.Value);
                }
            }
            return(true);
        }
        // Token: 0x060001BB RID: 443 RVA: 0x000109EC File Offset: 0x0000EBEC
        public bool Apply(Material m)
        {
            Shader shader = Shader.Find(this.shader);

            if (shader == null)
            {
                return(false);
            }
            LogUtil.Debug(new object[]
            {
                "apply shader:",
                shader.name
            });
            m.shader = shader;
            ShaderType shaderType = ShaderType.Resolve(shader.name);

            if (shaderType == ShaderType.UNKNOWN)
            {
                return(false);
            }
            foreach (ShaderPropColor shaderPropColor in shaderType.colProps)
            {
                Func <CCMaterial, CCColor> func;
                if (CCMaterial.COLOR_DIC.TryGetValue(shaderPropColor.key, out func))
                {
                    m.SetColor(shaderPropColor.propId, func(this).ToColor());
                }
            }
            foreach (ShaderPropFloat shaderPropFloat in shaderType.fProps)
            {
                Func <CCMaterial, float?> func2;
                if (CCMaterial.FLOAT_DIC.TryGetValue(shaderPropFloat.key, out func2))
                {
                    float?num = func2(this);
                    if (num != null)
                    {
                        m.SetFloat(shaderPropFloat.propId, num.Value);
                    }
                }
            }
            return(true);
        }
        public void ChangeShader(string shaderName, int shaderIdx = -1)
        {
            Shader shader = Shader.Find(shaderName);

            if (shader != null)
            {
                var rq = material.renderQueue;
                material.shader      = shader;
                material.renderQueue = rq;
                var type1 = (shaderIdx != -1) ? ShaderType.Resolve(shaderIdx) : ShaderType.Resolve(shaderName);
                if (type1 != ShaderType.UNKNOWN)
                {
                    Update(type1);
                    LogUtil.Debug("selected shader updated");
                }

                //} else {
                //    // var script = CustomShaderHolder.ShaderScripts[shaderIdx];
                //    // var matType = CustomShaderHolder.customMat[shaderIdx];
                //    // material = new Material(script);
                //    // // http://forum.unity3d.com/threads/setting-renderer-materials-by-index-doesnt-work.59150/
                //    // // 一見無駄な処理だが、materialsに直接代入しなければ反映されない(Unity)
                //    // var mats = edited.renderer.materials;
                //    // mats[matIdx] = material;
                //    // renderer.materials = mats;
                //    //
                //    // Update(matType);
                //
                //    Shader selected;
                //    if (CustomShaderHolder.customShader.TryGetValue(shaderIdx, out selected)) {
                //        material.shader = selected;
                //        var matType = CustomShaderHolder.customMat[shaderIdx];
                //        Update(matType);
                //        LogUtil.Debug("shader udated.", shaderName);
                //    } else {
                //        LogUtil.Debug("shader not found.", shaderName);
                //    }
            }
        }
        private static ACCMaterialEx Load(BinaryReader reader)
        {
            int    version     = reader.ReadInt32();
            string name1       = reader.ReadString();
            string name2       = reader.ReadString();
            string shaderName1 = reader.ReadString();
            var    shaderType  = ShaderType.Resolve(shaderName1);

            var created = new ACCMaterialEx(shaderType);

            created.name1 = name1;
            created.name2 = name2;

            //created.shader = created.type;
            //created.type1 = ShaderMapper.resolve(shaderName1);
            //created.shader = created.type1.shader;

            string shaderName2 = reader.ReadString();

            while (true)
            {
                string type = reader.ReadString();
                if (type == "end")
                {
                    break;
                }

                string propName = reader.ReadString();
                switch (type)
                {
                case "tex":
                    string sub = reader.ReadString();
                    switch (sub)
                    {
                    case "tex2d":

                        var tex = new ACCTextureEx(propName);
                        tex.editname  = reader.ReadString();
                        tex.txtpath   = reader.ReadString();
                        tex.texOffset = new Vector2(reader.ReadSingle(),
                                                    reader.ReadSingle());
                        tex.texScale = new Vector2(reader.ReadSingle(),
                                                   reader.ReadSingle());
                        created.texDic[tex.propKey] = tex;
                        break;

                    case "null":
                        break;

                    case "texRT":
                        reader.ReadString();
                        reader.ReadString();
                        break;
                    }
                    break;

                case "col":
                case "vec":
                    var c = new Color(reader.ReadSingle(), reader.ReadSingle(),
                                      reader.ReadSingle(), reader.ReadSingle());
                    created.SetColor(propName, c);
                    break;

                case "f":
                    float f = reader.ReadSingle();
                    created.SetFloat(propName, f);
                    break;
                }
            }
            return(created);
        }
        // Token: 0x060000E1 RID: 225 RVA: 0x0000B0A4 File Offset: 0x000092A4
        private static ACCMaterialEx Load(BinaryReader reader)
        {
            reader.ReadInt32();
            string        text          = reader.ReadString();
            string        text2         = reader.ReadString();
            string        name          = reader.ReadString();
            ShaderType    type          = ShaderType.Resolve(name);
            ACCMaterialEx accmaterialEx = new ACCMaterialEx(type)
            {
                name1 = text,
                name2 = text2
            };

            reader.ReadString();
            for (;;)
            {
                string text3 = reader.ReadString();
                if (text3 == "end")
                {
                    break;
                }
                string propName = reader.ReadString();
                string a;
                if ((a = text3) != null)
                {
                    if (!(a == "tex"))
                    {
                        if (!(a == "col") && !(a == "vec"))
                        {
                            if (a == "f")
                            {
                                float f = reader.ReadSingle();
                                accmaterialEx.SetFloat(propName, f);
                            }
                        }
                        else
                        {
                            Color c = new Color(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle());
                            accmaterialEx.SetColor(propName, c);
                        }
                    }
                    else
                    {
                        string text4 = reader.ReadString();
                        string a2;
                        if ((a2 = text4) != null)
                        {
                            if (!(a2 == "tex2d"))
                            {
                                if (!(a2 == "null"))
                                {
                                    if (a2 == "texRT")
                                    {
                                        reader.ReadString();
                                        reader.ReadString();
                                    }
                                }
                            }
                            else
                            {
                                ACCTextureEx acctextureEx = new ACCTextureEx(propName);
                                acctextureEx.editname    = reader.ReadString();
                                acctextureEx.txtpath     = reader.ReadString();
                                acctextureEx.texOffset.x = reader.ReadSingle();
                                acctextureEx.texOffset.y = reader.ReadSingle();
                                acctextureEx.texScale.x  = reader.ReadSingle();
                                acctextureEx.texScale.y  = reader.ReadSingle();
                                accmaterialEx.texDic[acctextureEx.propKey] = acctextureEx;
                            }
                        }
                    }
                }
            }
            return(accmaterialEx);
        }
        public bool Apply(Material m)
        {
            Shader sh = Shader.Find(shader);

            if (sh == null)
            {
                return(false);
            }

            m.shader = sh;
            var type = ShaderType.Resolve(sh.name);

            if (type == ShaderType.UNKNOWN)
            {
                return(false);
            }

            foreach (var colProp in type.colProps)
            {
                CCColor cc = null;
                switch (colProp.key)
                {
                case PropKey._Color:
                    cc = color;
                    break;

                case PropKey._ShadowColor:
                    cc = shadowColor;
                    break;

                case PropKey._RimColor:
                    cc = rimColor;
                    break;

                case PropKey._OutlineColor:
                    cc = outlineColor;
                    break;
//        _SpecColor,
//        _ReflectColor,
//        _Emission,
                }
                if (cc != null)
                {
                    m.SetColor(colProp.propId, cc.ToColor());
                }
            }

            foreach (var prop in type.fProps)
            {
                float?fVal = null;
                switch (prop.key)
                {
                case PropKey._Shininess:
                    fVal = shininess;
                    break;

                case PropKey._OutlineWidth:
                    fVal = outlineWidth;
                    break;

                case PropKey._RimPower:
                    fVal = rimPower;
                    break;

                case PropKey._RimShift:
                    fVal = rimShift;
                    break;

                case PropKey._HiRate:
                    fVal = hiRate;
                    break;

                case PropKey._HiPow:
                    fVal = hiPow;
                    break;

                case PropKey._Cutoff:
                    fVal = cutoff;
                    break;

                case PropKey._FloatValue1:
                    fVal = floatVal1;
                    break;

                case PropKey._FloatValue2:
                    fVal = floatVal2;
                    break;

                case PropKey._FloatValue3:
                    fVal = floatVal3;
                    break;
                }
                if (fVal.HasValue)
                {
                    m.SetFloat(prop.propId, fVal.Value);
                }
            }
            return(true);
        }