/// <summary>只刷新对应模型的材质, 不刷新子物体的</summary> public void RefreshMaterial(GameObject go, bool rebuildImmediately, Action callback) { if (MatJD != null) { CityMaterial.SetMaterial(MatJD, go, rebuildImmediately, callback); } }
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); }
//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); }
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); }
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); }
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); }
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); }
public void InitMaterialGUI() { materialInstance = City.Instance.MaterialList.Find(x => x.GetMaterialType() == materialToDisplay); thisText.text = materialInstance.GetCount().ToString(); StartCoroutine(DisplayLoop()); }
public bool FindMaterial(JsonData cityMatJson, out ProceduralMaterial outMat) { return(FindMaterial(CityMaterial.CreateFromJClass(cityMatJson), out outMat)); }
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(); } } }); } }