private Texture ChangeTexFile(string dir, string filename, int matNo1, string propName) { Texture changedTex; // キャッシュ削除用に変更前のテクスチャを取得 var srcTex = material.GetTexture(propName) as Texture2D; string extension = Path.GetExtension(filename).ToLower(); if (extension.Length == 0 || extension == FileConst.EXT_TEXTURE) { string texName; if (extension.Length == 0) { texName = filename; filename += FileConst.EXT_TEXTURE; } else { texName = filename.Substring(0, filename.Length - 4); } holder.currentMaid.body0.ChangeTex(holder.currentSlot.Name, matNo1, propName, filename, null, MaidParts.PARTS_COLOR.NONE); // ChangeTexは、Materialからロードした時と違い、nameにファイル名が設定されてしまうため、 // 拡張子を除いた名前を再設定 changedTex = material.GetTexture(propName); if (changedTex != null) { changedTex.name = texName; } } else { TBodySkin slot = holder.currentMaid.body0.GetSlot(holder.currentSlot.Name); // 直接イメージをロードして適用(要dir指定) var mat = holder.GetMaterial(slot, matNo1); if (mat == null) { return(null); } byte[] img = UTY.LoadImage(Path.Combine(dir, filename)); var tex2d = new Texture2D(1, 1, TextureFormat.RGBA32, false); tex2d.LoadImage(img); slot.listDEL.Add(tex2d); // tex以外は拡張子を付与したままとする tex2d.name = filename; //Path.GetFileNameWithoutExtension(filename); mat.SetTexture(propName, tex2d); changedTex = tex2d; } // テクスチャ変更後は、以前のFilterParamやキャッシュをリセット if (srcTex != null) { textureModifier.RemoveCache(srcTex); textureModifier.RemoveFilter(holder.currentMaid, holder.currentSlot.Name, material, srcTex); } return(changedTex); }
// Token: 0x06000375 RID: 885 RVA: 0x0001F3F4 File Offset: 0x0001D5F4 private Texture ChangeTexFile(string dir, string filename, int matNo1, string propName) { Texture2D texture2D = this.material.GetTexture(propName) as Texture2D; string text = Path.GetExtension(filename).ToLower(); Texture texture; if (text.Length == 0 || text == FileConst.EXT_TEXTURE) { string name; if (text.Length == 0) { name = filename; filename += FileConst.EXT_TEXTURE; } else { name = filename.Substring(0, filename.Length - 4); } LogUtil.Debug(new object[] { "ChangeTex:", filename, ", propName:", propName }); ACCTexturesView.holder.CurrentMaid.body0.ChangeTex(ACCTexturesView.holder.CurrentSlot.Name, matNo1, propName, filename, null, MaidParts.PARTS_COLOR.NONE); texture = this.material.GetTexture(propName); if (texture != null) { texture.name = name; } } else { TBodySkin slot = ACCTexturesView.holder.CurrentMaid.body0.GetSlot((int)ACCTexturesView.holder.CurrentSlot.Id); Material material = ACCTexturesView.holder.GetMaterial(slot, matNo1); if (material == null) { return(null); } byte[] data = UTY.LoadImage(Path.Combine(dir, filename)); Texture2D texture2D2 = new Texture2D(1, 1, TextureFormat.ARGB32, false); texture2D2.LoadImage(data); slot.listDEL.Add(texture2D2); texture2D2.name = filename; LogUtil.Debug(new object[] { "SetTexture:", filename, ", propName:", propName, ", (", texture2D2.width, ",", texture2D2.height, ")" }); material.SetTexture(propName, texture2D2); texture = texture2D2; } if (texture2D == null) { return(texture); } ACCTexturesView.textureModifier.RemoveCache(texture2D); ACCTexturesView.textureModifier.RemoveFilter(ACCTexturesView.holder.CurrentMaid, ACCTexturesView.holder.CurrentSlot.Name, this.material, texture2D); return(texture); }
private Texture ChangeTexFile(string dir, string filename, int matNo1, string propName) { Texture changedTex; // キャッシュ削除用に変更前のテクスチャを取得 var srcTex = material.GetTexture(propName) as Texture2D; // ReSharper disable once PossibleNullReferenceException nullを返すのはnull入力時のみ.ここではありえない var extension = Path.GetExtension(filename).ToLower(); if (extension.Length == 0 || extension == FileConst.EXT_TEXTURE) { string texName; if (extension.Length == 0) { texName = filename; filename += FileConst.EXT_TEXTURE; } else { texName = filename.Substring(0, filename.Length - 4); } LogUtil.Debug("ChangeTex:", filename, ", propName:", propName); holder.CurrentMaid.body0.ChangeTex(holder.CurrentSlot.Name, 0, matNo1, propName, filename, null, MaidParts.PARTS_COLOR.NONE); // ChangeTexは、Materialからロードした時と違い、nameにファイル名が設定されてしまうため、 // 拡張子を除いた名前を再設定 changedTex = material.GetTexture(propName); if (changedTex != null) { changedTex.name = texName; } } else { var slot = holder.CurrentMaid.body0.GetSlot((int)holder.CurrentSlot.Id); // 直接イメージをロードして適用(要dir指定) var mat = holder.GetMaterial(slot, matNo1); if (mat == null) { return(null); } var img = UTY.LoadImage(Path.Combine(dir, filename)); var tex2D = new Texture2D(1, 1, TextureFormat.ARGB32, false); tex2D.LoadImage(img); slot.listDEL.Add(tex2D); // tex以外は拡張子を付与したままとする tex2D.name = filename; //Path.GetFileNameWithoutExtension(filename); LogUtil.Debug("SetTexture:", filename, ", propName:", propName, ", (", tex2D.width, ",", tex2D.height, ")"); mat.SetTexture(propName, tex2D); changedTex = tex2D; } // テクスチャ変更後は、以前のFilterParamやキャッシュをリセット if (srcTex == null) { return(changedTex); } textureModifier.RemoveCache(srcTex); textureModifier.RemoveFilter(holder.CurrentMaid, holder.CurrentSlot.Name, material, srcTex); return(changedTex); }