Example #1
0
 /// <summary>只刷新对应模型的材质, 不刷新子物体的</summary>
 public void RefreshMaterial(GameObject go, bool rebuildImmediately, Action callback)
 {
     if (MatJD != null)
     {
         CityMaterial.SetMaterial(MatJD, go, rebuildImmediately, callback);
     }
 }
Example #2
0
    public override JsonData ToJsonData()
    {
        UpdatePos();

        JsonData node = new JsonData();

        node["guid"]     = guid;
        node["fileCrc"]  = fileCrc;
        node["fileName"] = fileName.ToLower();
        if (!string.IsNullOrEmpty(resType))
        {
            node["type"] = resType.ToLower();
        }
        node["tag"]      = resTag;
        node["postion"]  = postion;
        node["rotation"] = rotation;
        node["scale"]    = scale;
        node["name"]     = name;
        if (MatJD == null)
        {
            MatJD = new CityMaterial(null).ToJsonData();
        }
        node["material"] = MatJD;

        if (children != null)
        {
            node["children"] = children.ToJsonDataList();
        }
        return(node);
    }
Example #3
0
    //static public CityMaterial CreateFromJClass(JSONClass json)
    //{
    //    var cityMat = new CityMaterial();
    //    cityMat.matName = json["name"];
    //    cityMat.matParams = json["params"] as JSONArray;
    //    return cityMat;
    //}
    static public CityMaterial CreateFromJClass(JsonData jd)
    {
        var cityMat = new CityMaterial();

        cityMat.matName   = jd.ReadString("name");
        cityMat.matParams = jd.ReadJsonData("params");
        return(cityMat);
    }
Example #4
0
    public void OtherSourcesIncome(Enums.Material type, int count)
    {
        CityMaterial m = MaterialList.Find(x => x.GetMaterialType() == type);

        if (m == null)
        {
            MaterialList.Add(m = new CityMaterial(type));
        }
        m.UseMaterial(-count);
    }
Example #5
0
    public bool TryToGetMaterial(Enums.Material type, int count)
    {
        CityMaterial m = MaterialList.Find(x => x.GetMaterialType() == type);

        if (m.GetCount() > count)
        {
            m.UseMaterial(count);
            return(true);
        }
        return(false);
    }
Example #6
0
    public void OtherSourcesOutcome(Enums.Material type, int count)
    {
        CityMaterial m = MaterialList.Find(x => x.GetMaterialType() == type);

        if (m == null)
        {
            return;
        }
        if (m.GetCount() < count)
        {
            return;
        }
        m.UseMaterial(count);
    }
Example #7
0
    public bool FindMaterial(CityMaterial cityMat, out ProceduralMaterial outMat)
    {
        outMat = null;
        string targetMatName = Utils.RemovePostfix_Instance(cityMat.matName);


        if (matLibrary.ContainsKey(targetMatName))
        {
            var mlist = matLibrary[targetMatName];
            return(mlist.GetSamiliarMaterial(CityMaterialParamList.CreateFromJson(cityMat.matParams),
                                             Matlevel, out outMat));
        }
        return(false);
    }
Example #8
0
 public void InitMaterialGUI()
 {
     materialInstance = City.Instance.MaterialList.Find(x => x.GetMaterialType() == materialToDisplay);
     thisText.text    = materialInstance.GetCount().ToString();
     StartCoroutine(DisplayLoop());
 }
Example #9
0
 public bool FindMaterial(JsonData cityMatJson, out ProceduralMaterial outMat)
 {
     return(FindMaterial(CityMaterial.CreateFromJClass(cityMatJson), out outMat));
 }
Example #10
0
    static public void SetMaterial(JsonData js, GameObject go, bool rebuildImmediately, Action onDone = null)
    {
        if (go == null)
        {
            return;
        }

        if (js == null || !js.Keys.Contains("name") || !js.Keys.Contains("params"))
        {
            if (onDone != null)
            {
                onDone();
            }
            return;
        }

        var cityMat = new CityMaterial();

        cityMat.ReadJsonData(js);
        if (cityMat.matName == UnsetName || cityMat.matName == null)
        {
            if (onDone != null)
            {
                onDone();
            }
        }
        else
        {
            //cityMat.matName = cityMat.matName.Substring(0, cityMat.matName.Length - backstr.Length);
            cityMat.matName = Utils.RemovePostfix_Instance(cityMat.matName);
            //CityMaterialParamList paramList = CityMaterialParamList.CreateFromJson(cityMat.matParams);

            string strName = cityMat.matName;
            if (strName.IndexOf("(") > -1)
            {
                strName = strName.Substring(0, strName.IndexOf("("));
                strName = strName.TrimEnd();
            }

            JHQCHelper.Instance.GetMatByName(strName, (mat) =>
            {
                if (go == null)
                {
                    return;
                }
                var render = go.GetComponent <MeshRenderer>();


                if (render != null && mat != null)
                {
                    render.material = mat.Material;

                    JHQCHelper.Instance.AddObjAndMat(go, mat);

                    if (onDone != null)
                    {
                        onDone();
                    }
                }
            });
        }
    }