// Token: 0x060000E0 RID: 224 RVA: 0x0000AF74 File Offset: 0x00009174 public static ACCMaterialEx Load(string file) { bool flag; using (BinaryReader binaryReader = new BinaryReader(FileUtilEx.Instance.GetStream(file, out flag), Encoding.UTF8)) { string text = binaryReader.ReadString(); if (flag || binaryReader.BaseStream.Position > 0L) { if (text == FileConst.HEAD_MATE) { return(ACCMaterialEx.Load(binaryReader)); } StringBuilder stringBuilder = LogUtil.Log(new object[] { "指定されたファイルのヘッダが不正です。", text, file }); throw new ACCException(stringBuilder.ToString()); } } ACCMaterialEx result; using (BinaryReader binaryReader2 = new BinaryReader(new MemoryStream(FileUtilEx.Instance.LoadInternal(file), false), Encoding.UTF8)) { string text2 = binaryReader2.ReadString(); if (!(text2 == FileConst.HEAD_MATE)) { StringBuilder stringBuilder2 = LogUtil.Log(new object[] { "指定されたファイルのヘッダが不正です。", text2, file }); throw new ACCException(stringBuilder2.ToString()); } result = ACCMaterialEx.Load(binaryReader2); } return(result); }
public void Init(ACCMaterial edited) { 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) { needPmat = false; } else { needPmat = true; var matName = (srcMat != null)? srcMat.name2 : edited.name; var srcRq = MaterialUtil.GetRenderQueue(matName); // 既存のマテリアル名に対応するpmatが存在しない => 変更必要 if (srcRq < 0) { needPmatChange = true; } LogUtil.DebugF("render queue: src={0}, edited={1}", srcRq, edited.renderQueue); needPmatChange |= !NumberUtil.Equals(edited.renderQueue.val, srcRq, 0.01f); pmatExport = needPmatChange; } } if (!shaderChanged) { // TODO modelロードでsrcMatを作成した場合は条件削除可能 if (srcMat != null) { hasParamChanged = editedMat.HasChanged(srcMat); } } 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); var 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) { filter = filter }; texDic[texProp.key] = trgtTex; hasTexColorChanged |= colorChanged; hasTexFileChanged |= fileChanged; } LogUtil.Debug("target material initialized"); }
// 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" }); }