private void WriteTex(BinaryWriter writer, string propName, TargetMaterial tm, TargetTexture trgtTex) { Write(writer, "tex"); Write(writer, propName); var sub = "tex2d"; if (trgtTex == null || trgtTex.tex == null) { sub = "null"; } Write(writer, sub); switch (sub) { case "tex2d": // カラー変更時にはファイル生成するため、ファイル名も変更が必要 if (trgtTex.fileChanged || trgtTex.colorChanged) { Write(writer, trgtTex.EditFileNameNoExt()); // 拡張子不要 //Write(writer, trgtTex.EditFileName()); Write(writer, trgtTex.EditTxtPath()); Write(writer, tm.editedMat.material.GetTextureOffset(propName)); Write(writer, tm.editedMat.material.GetTextureScale(propName)); } break; case "null": break; case "texRT": // texRTはない writer.Write(string.Empty); writer.Write(string.Empty); break; } }
// Token: 0x06000139 RID: 313 RVA: 0x0000C670 File Offset: 0x0000A870 public void Init(ACCMaterial edited) { this.editedMat = edited; if (!this.onlyModel && !string.IsNullOrEmpty(this.filename)) { LogUtil.Debug(new object[] { "load material file", this.filename }); this.srcMat = ACCMaterialEx.Load(this.filename); this.shaderChanged = (this.editedMat.type != this.srcMat.type); } if (edited.type.isTrans) { if (Math.Abs(edited.renderQueue.val - 2000f) < 0.01f) { this.needPmat = false; } else { this.needPmat = true; string matName = (this.srcMat != null) ? this.srcMat.name2 : edited.name; float renderQueue = MaterialUtil.GetRenderQueue(matName); if (renderQueue < 0f) { this.needPmatChange = true; } LogUtil.DebugF("render queue: src={0}, edited={1}", new object[] { renderQueue, edited.renderQueue }); this.needPmatChange |= !NumberUtil.Equals(edited.renderQueue.val, renderQueue, 0.01f); this.pmatExport = this.needPmatChange; } } if (!this.shaderChanged && this.srcMat != null) { this.hasParamChanged = this.editedMat.HasChanged(this.srcMat); } this.editname = this.editedMat.material.name; Maid currentMaid = MaidHolder.Instance.CurrentMaid; foreach (ShaderPropTex shaderPropTex in this.editedMat.type.texProps) { LogUtil.Debug(new object[] { "propName:", shaderPropTex.key }); Texture texture = this.editedMat.material.GetTexture(shaderPropTex.propId); TextureModifier.FilterParam filter = ACCTexturesView.GetFilter(currentMaid, this.slotName, this.editedMat.material, shaderPropTex.propId); bool flag = filter != null && !filter.HasNotChanged(); bool flag2 = false; ACCTextureEx acctextureEx; if (texture != null && this.srcMat != null && this.srcMat.texDic.TryGetValue(shaderPropTex.key, out acctextureEx)) { flag2 = (acctextureEx.editname != texture.name); } TargetTexture value = new TargetTexture(flag, flag2, texture) { filter = filter }; this.texDic[shaderPropTex.key] = value; this.hasTexColorChanged = (this.hasTexColorChanged || flag); this.hasTexFileChanged = (this.hasTexFileChanged || flag2); } LogUtil.Debug(new object[] { "target material initialized" }); }
public void Init(ACCMaterial edited) { this.editedMat = edited; // ファイルからマテリアル情報をロード if (onlyModel) { // modelファイルからマテリアルのロード } else if (!string.IsNullOrEmpty(filename)) { LogUtil.Debug("load material file", filename); srcMat = ACCMaterialEx.Load(filename); shaderChanged = (editedMat.type != srcMat.type); } // pmat チェック // 透過型のみを対象とし、 // 1. マテリアル名に対応するpmatが存在しない場合 // 2. renderQueueが変更されている場合 if (edited.type.isTrans) { // renderqueueがデフォルト値であれば変更不要 if (Math.Abs(edited.renderQueue.val - 2000) < 0.01f) { this.needPmat = false; } else { this.needPmat = true; string matName = (srcMat != null)? srcMat.name2 : edited.name; float srcRq = MaterialUtil.GetRenderQueue(matName); // 既存のマテリアル名に対応するpmatが存在しない => 変更必要 if (srcRq < 0) { this.needPmatChange = true; } LogUtil.DebugF("render queue: src={0}, edited={1}", srcRq, edited.renderQueue); this.needPmatChange |= !NumberUtil.Equals(edited.renderQueue.val, srcRq, 0.01f); this.pmatExport = needPmatChange; } } if (!shaderChanged) { // TODO modelロードでsrcMatを作成した場合は条件削除可能 if (srcMat != null) { hasParamChanged = editedMat.hasChanged(srcMat); } } this.editname = editedMat.material.name; var maid = MaidHolder.Instance.currentMaid; // テクスチャの変更フラグチェック foreach (var texProp in editedMat.type.texProps) { //foreach (string propName in editedMat.type1.texPropNames) { LogUtil.Debug("propName:", texProp.key); Texture tex = editedMat.material.GetTexture(texProp.propId); var filter = ACCTexturesView.GetFilter(maid, slotName, editedMat.material, texProp.propId); var colorChanged = (filter != null) && !filter.hasNotChanged(); var fileChanged = false; if (tex != null && srcMat != null) { ACCTextureEx baseTex; if (srcMat.texDic.TryGetValue(texProp.key, out baseTex)) { fileChanged = (baseTex.editname != tex.name); } } var trgtTex = new TargetTexture(colorChanged, fileChanged, tex); trgtTex.filter = filter; texDic[texProp.key] = trgtTex; hasTexColorChanged |= colorChanged; hasTexFileChanged |= fileChanged; } LogUtil.Debug("target material initialized"); }
public void Init(ACCMaterial edited) { this.editedMat = edited; // ファイルからマテリアル情報をロード if (onlyModel) { // modelファイルからマテリアルのロード } else if (!string.IsNullOrEmpty(filename)) { LogUtil.Debug("load material file", filename); srcMat = ACCMaterialEx.Load(filename); shaderChanged = (editedMat.type != srcMat.type); } // pmat チェック // 透過型のみを対象とし、 // 1. マテリアル名に対応するpmatが存在しない場合 // 2. renderQueueが変更されている場合 if (edited.type.isTrans) { // renderqueueがデフォルト値であれば変更不要 if (Math.Abs(edited.renderQueue.val - 2000) < 0.01f) { this.needPmat = false; } else { this.needPmat = true; string matName = (srcMat != null)? srcMat.name2 : edited.name; float srcRq = MaterialType.GetRenderQueue(matName); // 既存のマテリアル名に対応するpmatが存在しない => 変更必要 if (srcRq < 0) this.needPmatChange = true; LogUtil.DebugF("render queue: src={0}, edited={1}", srcRq, edited.renderQueue); this.needPmatChange |= !NumberUtil.Equals(edited.renderQueue.val, srcRq, 0.01f); this.pmatExport = needPmatChange; } } if (!shaderChanged) { // TODO modelロードでsrcMatを作成した場合は条件削除可能 if (srcMat != null) hasParamChanged = editedMat.hasChanged(srcMat); } this.editname = editedMat.material.name; var maid = MaidHolder.Instance.currentMaid; // テクスチャの変更フラグチェック foreach (var texProp in editedMat.type.texProps) { //foreach (string propName in editedMat.type1.texPropNames) { LogUtil.Debug("propName:", texProp.key); Texture tex = editedMat.material.GetTexture(texProp.propId); var filter = ACCTexturesView.GetFilter(maid, slotName, editedMat.material, texProp.propId); var colorChanged = (filter != null) && !filter.hasNotChanged(); var fileChanged = false; if (tex != null && srcMat != null) { ACCTextureEx baseTex; if (srcMat.texDic.TryGetValue(texProp.key, out baseTex)) { fileChanged = (baseTex.editname != tex.name); } } var trgtTex = new TargetTexture(colorChanged, fileChanged, tex); trgtTex.filter = filter; texDic[texProp.key] = trgtTex; hasTexColorChanged |= colorChanged; hasTexFileChanged |= fileChanged; } LogUtil.Debug("target material initialized"); }