public ACCMaterial(Material m, Renderer r = null) { this.material = m; this.renderer = r; name = m.name; type = ShaderType.Resolve(m.shader.name); if (type == ShaderType.UNKNOWN) throw new Exception("ShaderType has not found:" + m.shader.name); renderQueue.Set( m.renderQueue ); rqEdit = renderQueue.ToString(); InitType(); }
// 編集前と後でオブジェクトを分ける場合用(未使用) public ACCMaterial(ACCMaterial src) { this.original = src; this.renderer = src.renderer; this.material = src.material; this.name = src.name; //this.shader = src.shader; //this.type1 = src.type1; this.type = src.type; this.renderQueue = src.renderQueue; // TODO 配列の中身はディープコピーとする this.editColors = src.editColors; this.editVals = src.editVals; }
public ACCTexture(Texture tex, Material mate, ShaderPropTex texProp, ShaderType type) :this(texProp.key) { this.tex = tex; this.type = type; this.prop = texProp; this.editname = tex.name; if (tex is Texture2D) { texOffset = mate.GetTextureOffset(propName); texScale = mate.GetTextureScale(propName); } else { LogUtil.DebugF("propName({0}): texture type:{1}", propName, tex.GetType()); } // } else { // // シェーダ切り替えなどで、元々存在しないテクスチャの場合 // LogUtil.DebugF("texture not found. propname={0}, material={1}", propName, mate.name); // // 空のテクスチャは作成しない //// this.tex = new Texture2D(2, 2); //// this.tex.name = string.Empty; //// // テクスチャを追加セット //// mate.SetTexture(propName, this.tex); // } }
static ShaderType() { var texTypeEmpty = new ShaderPropTex[0]; var texTypeR = new [] { ShaderPropType.RenderTex, }; var texType0 = new [] { ShaderPropType.MainTex, }; var texType0a = new [] { ShaderPropType.MainTexA, }; var texType1 = new [] { ShaderPropType.MainTex, ShaderPropType.ToonRamp, ShaderPropType.ShadowTex, ShaderPropType.ShadowRateToon, }; //ShaderPropType.MultiColTex, }; var texType1t = new [] { ShaderPropType.MainTex, ShaderPropType.ToonRamp, ShaderPropType.ShadowTex, ShaderPropType.ShadowRateToon, ShaderPropType.OutlineTex, ShaderPropType.OutlineToonRamp }; var texType1a = new [] { ShaderPropType.MainTexA, ShaderPropType.ToonRamp, ShaderPropType.ShadowTex, ShaderPropType.ShadowRateToon, }; // ShaderPropType.MultiColTex, }; var texTypeH = new [] { ShaderPropType.MainTex, ShaderPropType.ToonRamp, ShaderPropType.ShadowTex, ShaderPropType.ShadowRateToon, ShaderPropType.HiTex, }; // ShaderPropType.MultiColTex, }; var texTypeHt = new [] { ShaderPropType.MainTex, ShaderPropType.ToonRamp, ShaderPropType.ShadowTex, ShaderPropType.ShadowRateToon, ShaderPropType.HiTex, ShaderPropType.OutlineTex, ShaderPropType.OutlineToonRamp }; var texTypeStd = new [] { ShaderPropType.MainTexA, ShaderPropType.OcclusionMap, ShaderPropType.MetallicGlossMap, ShaderPropType.BumpMap, ShaderPropType.ParallaxMap, ShaderPropType.EmissionMap, ShaderPropType.DetailMask, ShaderPropType.DetailAlbedoMap, ShaderPropType.DetailNormalMap, ShaderPropType.SpecGlossMap }; // var texTypeMir = new []{ShaderPropType.MainTex, ShaderPropType.ReflectionTex}; var colEmpty = new ShaderPropColor[0]; var colC = new [] { ShaderPropType.Color, }; var colCa = new [] { ShaderPropType.ColorA, }; var colL = new [] { ShaderPropType.Color, ShaderPropType.ShadowColor, }; var colLa = new [] { ShaderPropType.ColorA, ShaderPropType.ShadowColor, }; var colTL = new [] { ShaderPropType.Color, ShaderPropType.ShadowColor, ShaderPropType.RimColor, }; var colTLa = new [] { ShaderPropType.ColorA, ShaderPropType.ShadowColor, ShaderPropType.RimColor, }; var colTLO = new [] { ShaderPropType.Color, ShaderPropType.ShadowColor, ShaderPropType.RimColor, ShaderPropType.OutlineColor, }; var colTLOa = new [] { ShaderPropType.ColorA, ShaderPropType.ShadowColor, ShaderPropType.RimColor, ShaderPropType.OutlineColor, }; var propEmpty = new ShaderPropFloat[0]; var propL = new [] { ShaderPropType.Shininess, }; var propLC1 = new [] { ShaderPropType.Shininess, ShaderPropType.Cutoff }; var propTL = new [] { ShaderPropType.Shininess, ShaderPropType.RimPower, ShaderPropType.RimShift, }; var propTLZ = new [] { ShaderPropType.Shininess, ShaderPropType.RimPower, ShaderPropType.RimShift, ShaderPropType.ZTest, ShaderPropType.ZTest2, ShaderPropType.ZTest2Alpha }; var propTLC1 = new [] { ShaderPropType.Shininess, ShaderPropType.RimPower, ShaderPropType.RimShift, ShaderPropType.Cutoff }; var propTLO = new [] { ShaderPropType.Shininess, ShaderPropType.OutlineWidth, ShaderPropType.RimPower, ShaderPropType.RimShift, }; var propTLH = new [] { ShaderPropType.Shininess, ShaderPropType.RimPower, ShaderPropType.RimShift, ShaderPropType.HiRate, ShaderPropType.HiPow }; var propTLHO = new [] { ShaderPropType.Shininess, ShaderPropType.OutlineWidth, ShaderPropType.RimPower, ShaderPropType.RimShift, ShaderPropType.HiRate, ShaderPropType.HiPow }; // var propStd = new [] { // ShaderPropType.Cutoff, ShaderPropType.Glossiness, ShaderPropType.GlossMapScale, ShaderPropType.SmoothnessTexChannel, ShaderPropType.Metallic, ShaderPropType.BumpScale, // ShaderPropType.Parallax, ShaderPropType.OcclusionStrength, ShaderPropType.DetailNormalMapScale, // ShaderPropType.UVSec, ShaderPropType.Mode, ShaderPropType.SrcBlend, ShaderPropType.DstBlend, ShaderPropType.ZWrite, // }; var propStd = new [] { ShaderPropType.Cutoff, ShaderPropType.OcclusionStrength, ShaderPropType.Glossiness, ShaderPropType.GlossMapScale, ShaderPropType.SpecularHeighlights, ShaderPropType.GlossyReflections, ShaderPropType.BumpScale, ShaderPropType.DetailNormalMapScale, }; count = 0; var shaderList = new List <ShaderType> { new ShaderType("CM3D2/Toony_Lighted", "トゥーン", texType1, colTL, propTL), new ShaderType("CM3D2/Toony_Lighted_Trans", "トゥーン 透過", texType1a, colTLa, propTLC1, true), new ShaderType("CM3D2/Toony_Lighted_Trans_NoZ", "トゥーン 透過 NoZ", texType1a, colTLa, propTL, true), #if COM3D2 new ShaderType("CM3D2/Toony_Lighted_Trans_NoZTest", "トゥーン 透過 NoZTest", texType1a, colTLa, propTLZ, true), #endif new ShaderType("CM3D2/Toony_Lighted_Outline", "トゥーン 輪郭線", texType1, colTLO, propTLO), new ShaderType("CM3D2/Toony_Lighted_Outline_Trans", "トゥーン 輪郭線 透過", texType1a, colTLOa, propTLO, true), #if COM3D2 new ShaderType("CM3D2/Toony_Lighted_Outline_Tex", "トゥーン 輪郭線 Tex", texType1t, colTLO, propTLO), #endif new ShaderType("CM3D2/Toony_Lighted_Hair", "トゥーン 髪", texTypeH, colTL, propTLH), new ShaderType("CM3D2/Toony_Lighted_Hair_Outline", "トゥーン 髪 輪郭線", texTypeH, colTLO, propTLHO), #if COM3D2 new ShaderType("CM3D2/Toony_Lighted_Hair_Outline_Tex", "トゥーン 髪 輪郭線 Tex", texTypeHt, colTLO, propTLHO), new ShaderType("CM3D2/Toony_Lighted_Cutout_AtC", "トゥーン Cutout", texType1a, colTLa, propTLC1, true), #endif new ShaderType("CM3D2/Lighted", "非トゥーン", texType0, colL, propL), #if COM3D2 new ShaderType("CM3D2/Lighted_Cutout_AtC", "非トゥーン Cutout", texType0a, colLa, propLC1), #endif new ShaderType("CM3D2/Lighted_Trans", "透過", texType0a, colLa, propL, true), new ShaderType("Unlit/Texture", "発光", texType0, colEmpty, propEmpty), new ShaderType("Unlit/Transparent", "発光 透過", texType0a, colEmpty, propEmpty, true), new ShaderType("Diffuse", "リアル", texType0, colC, propEmpty), new ShaderType("Transparent/Diffuse", "リアル 透過", texType0a, colCa, propEmpty, true), new ShaderType("CM3D2/Mosaic", "モザイク", texTypeR, colEmpty, new[] { ShaderPropType.FloatValue1 }), new ShaderType("CM3D2/Man", "ご主人様", texTypeEmpty, colC, new[] { ShaderPropType.FloatValue2, ShaderPropType.FloatValue3 }), new ShaderType("CM3D2_Debug/Debug_CM3D2_Normal2Color", "法線", texTypeEmpty, colC, propEmpty), // Emission new ShaderType("Standard", "Standard", texTypeStd, colC, propStd), }; IList <ShaderType> toRemoves = null; STANDARD = shaderList[shaderList.Count - 1]; // ゲーム中で参照できるシェーダに限定 foreach (var shaderType in shaderList) { var shader = Shader.Find(shaderType.name); if (shader == null) { if (toRemoves == null) { toRemoves = new List <ShaderType>(); } toRemoves.Add(shaderType); } } if (!Settings.Instance.enableStandard) { shaderList.Remove(STANDARD); } if (toRemoves != null) { foreach (var toRemove in toRemoves) { shaderList.Remove(toRemove); } } shaders = shaderList.ToArray(); for (var i = 0; i < shaders.Length; i++) { shaders[i].idx = i; } var idx = shaderList.IndexOf(STANDARD); if (idx != -1) { SHADER_TYPE_STANDARD = idx; SHADER_TYPE_CM3D2_MAX = SHADER_TYPE_STANDARD - 1; } shaderMap = new Dictionary <string, ShaderType>(shaders.Length + 2); foreach (var s in shaders) { shaderMap[s.name] = s; } ; shaderMap["Legacy Shaders/Transparent/Diffuse"] = shaderMap["Transparent/Diffuse"]; shaderMap["Legacy Shaders/Diffuse"] = shaderMap["Diffuse"]; shader2Map = new Dictionary <string, string>(shaders.Length + 1); foreach (var s in shaders) { shader2Map[s.name] = s.name.Replace("/", "__"); } ; shader2Map["CM3D2/Toony_Lighted_Hair_Outline_Tex"] = "CM3D2__Toony_Lighted_Hair_Outline"; }
// Token: 0x060000D4 RID: 212 RVA: 0x0000A779 File Offset: 0x00008979 protected ACCMaterial(ShaderType type) { this.type = type; this.InitType(); }
// Token: 0x060000DA RID: 218 RVA: 0x0000AAE8 File Offset: 0x00008CE8 public void Update(ShaderType sdrType) { if (this.type == sdrType) { return; } ShaderPropColor[] colProps = sdrType.colProps; EditColor[] array = new EditColor[colProps.Length]; ColorPicker[] array2 = new ColorPicker[colProps.Length]; int itemHeight = UIParams.Instance.itemHeight; for (int i = 0; i < colProps.Length; i++) { ShaderPropColor shaderPropColor = colProps[i]; if (i < this.editColors.Length) { if (this.editColors[i].type == shaderPropColor.colorType) { array[i] = this.editColors[i]; } else { array[i] = new EditColor(this.editColors[i].val, shaderPropColor.colorType, shaderPropColor.composition); } array2[i] = this.pickers[i]; } else { Color val; if (this.material != null) { val = this.material.GetColor(shaderPropColor.propId); } else { val = ((this.Original != null) ? this.Original.GetColor(i) : shaderPropColor.defaultVal); } array[i] = new EditColor(val, shaderPropColor.colorType, shaderPropColor.composition); array2[i] = new ColorPicker(ACCMaterial.presetMgr) { ColorTex = new Texture2D(itemHeight, itemHeight, TextureFormat.RGB24, false) }; array2[i].SetTexColor(ref array[i].val); } } this.editColors = array; this.pickers = array2; ShaderPropFloat[] fProps = sdrType.fProps; EditValue[] array3 = new EditValue[fProps.Length]; for (int j = 0; j < fProps.Length; j++) { float val2 = (this.material != null) ? this.material.GetFloat(fProps[j].propId) : fProps[j].defaultVal; array3[j] = new EditValue(val2, fProps[j].range); } this.editVals = array3; foreach (ShaderPropTex shaderPropTex in sdrType.texProps) { if (this.material != null && !this.material.HasProperty(shaderPropTex.keyName)) { this.material.SetTexture(shaderPropTex.propId, new Texture()); } } this.type = sdrType; }
// Token: 0x060000D9 RID: 217 RVA: 0x0000AA30 File Offset: 0x00008C30 public void ChangeShader(string shaderName, int shaderIdx = -1) { Shader shader = Shader.Find(shaderName); if (shader == null) { LogUtil.Debug(new object[] { "Shader not found. load resource :", shaderName }); shader = Resources.Load <Shader>("Shaders/" + shaderName); if (shader == null) { return; } } int num = this.material.renderQueue; this.material.shader = shader; this.material.renderQueue = num; ShaderType shaderType = (shaderIdx != -1) ? ShaderType.Resolve(shaderIdx) : ShaderType.Resolve(shaderName); if (shaderType == ShaderType.UNKNOWN) { return; } this.Update(shaderType); LogUtil.Debug(new object[] { "selected shader updated: ", shaderName }); }
private ACCMaterialEx(ShaderType type) : base(type) { }
// public ACCTexture(Material mate, string propName, MaterialType type) :this(propName) { // this.type = type; // this.tex = mate.GetTexture(propName); // // if (tex != null) { // this.editname = tex.name; // if (tex is Texture2D) { // texOffset = mate.GetTextureOffset(propName); // texScale = mate.GetTextureScale(propName); // } else { // LogUtil.DebugF("propName({0}): texture type:{1}", propName, tex.GetType()); // } // } else { // // シェーダ切り替えなどで、元々存在しないテクスチャの場合 // LogUtil.DebugF("texture not found. propname={0}, material={1}", propName, mate.name); // // 空のテクスチャは作成しない //// this.tex = new Texture2D(2, 2); //// this.tex.name = string.Empty; //// // テクスチャを追加セット //// mate.SetTexture(propName, this.tex); // } // } public ACCTexture(ACCTexture src) { this.original = src; this.propName = src.propName; this.type = src.type; this.prop = src.prop; this.propKey = src.propKey; this.editname = src.editname; this.filepath = src.filepath; this.texOffset = src.texOffset; this.texScale = src.texScale; this.toonType = src.toonType; }
public static ACCTexture Create(Material mate, ShaderPropTex texProp, ShaderType type) { var tex = mate.GetTexture(texProp.propId); return tex == null ? null : new ACCTexture(tex, mate, texProp, type); }
public CCMaterial(Material m, ShaderType type) { name = m.name; shader = m.shader.name; foreach (var colProp in type.colProps) { var ccc = new CCColor(m.GetColor(colProp.propId)); switch(colProp.key) { case PropKey._Color: color = ccc; break; case PropKey._ShadowColor: shadowColor = ccc; break; case PropKey._RimColor: rimColor = ccc; break; case PropKey._OutlineColor: outlineColor = ccc; break; // _SpecColor, // _ReflectColor, // _Emission, } } foreach (var prop in type.fProps) { var fVal = m.GetFloat(prop.propId); switch(prop.key) { case PropKey._Shininess: shininess = fVal; break; case PropKey._OutlineWidth: outlineWidth = fVal; break; case PropKey._RimPower: rimPower = fVal; break; case PropKey._RimShift: rimShift = fVal; break; case PropKey._HiRate: hiRate = fVal; break; case PropKey._HiPow: hiPow = fVal; break; case PropKey._FloatValue1: floatVal1 = fVal; break; case PropKey._FloatValue2: floatVal2 = fVal; break; case PropKey._FloatValue3: floatVal3 = fVal; break; } } }
// Token: 0x060001BA RID: 442 RVA: 0x000107BC File Offset: 0x0000E9BC public CCMaterial(Material m, ShaderType type) { this.name = m.name; this.shader = m.shader.name; foreach (ShaderPropColor shaderPropColor in type.colProps) { CCColor cccolor = new CCColor(m.GetColor(shaderPropColor.propId)); switch (shaderPropColor.key) { case PropKey._Color: this.color = cccolor; break; case PropKey._ShadowColor: this.shadowColor = cccolor; break; case PropKey._RimColor: this.rimColor = cccolor; break; case PropKey._OutlineColor: this.outlineColor = cccolor; break; } } foreach (ShaderPropFloat shaderPropFloat in type.fProps) { float @float = m.GetFloat(shaderPropFloat.propId); switch (shaderPropFloat.key) { case PropKey._Shininess: this.shininess = new float?(@float); break; case PropKey._OutlineWidth: this.outlineWidth = new float?(@float); break; case PropKey._RimPower: this.rimPower = new float?(@float); break; case PropKey._RimShift: this.rimShift = new float?(@float); break; case PropKey._HiRate: this.hiRate = new float?(@float); break; case PropKey._HiPow: this.hiPow = new float?(@float); break; case PropKey._FloatValue1: this.floatVal1 = new float?(@float); break; case PropKey._FloatValue2: this.floatVal2 = new float?(@float); break; case PropKey._FloatValue3: this.floatVal3 = new float?(@float); break; case PropKey._Cutoff: this.cutoff = new float?(@float); break; case PropKey._Cutout: this.cutout = new float?(@float); break; case PropKey._ZTest: this.ztest = new float?(@float); break; case PropKey._ZTest2: this.ztest2 = new float?(@float); break; case PropKey._ZTest2Alpha: this.ztest2Alpha = new float?(@float); break; } } }
private static ACCMaterialEx Load(BinaryReader reader) { var version = reader.ReadInt32(); var name1 = reader.ReadString(); var name2 = reader.ReadString(); var shaderName1 = reader.ReadString(); var shaderType = ShaderType.Resolve(shaderName1); var created = new ACCMaterialEx(shaderType) { name1 = name1, name2 = name2 }; //created.shader = created.type; //created.type1 = ShaderMapper.resolve(shaderName1); //created.shader = created.type1.shader; var shaderName2 = reader.ReadString(); while (true) { var type = reader.ReadString(); if (type == "end") { break; } var propName = reader.ReadString(); switch (type) { case "tex": var sub = reader.ReadString(); switch (sub) { case "tex2d": var tex = new ACCTextureEx(propName); tex.editname = reader.ReadString(); tex.txtpath = reader.ReadString(); tex.texOffset.x = reader.ReadSingle(); tex.texOffset.y = reader.ReadSingle(); tex.texScale.x = reader.ReadSingle(); tex.texScale.y = reader.ReadSingle(); created.texDic[tex.propKey] = tex; break; case "null": break; case "texRT": reader.ReadString(); reader.ReadString(); break; } break; case "col": case "vec": var c = new Color(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); created.SetColor(propName, c); break; case "f": var f = reader.ReadSingle(); created.SetFloat(propName, f); break; } } return(created); }
public static ACCTexture Create(Material mate, ShaderPropTex texProp, ShaderType type) { var tex = mate.GetTexture(texProp.propId); return(tex == null ? null : new ACCTexture(tex, mate, texProp, type)); }
public void Update(ShaderType sdrType) { if (this.type == sdrType) return; // TODO 変更前のマテリアルから設定値をロード // 同一長の場合でも更新(Alphaの有無が異なるケースがある) var colProps = sdrType.colProps; var createdColors = new EditColor[colProps.Length]; for (int i=0; i<colProps.Length; i++) { var colProp = colProps[i]; if (i < this.editColors.Length && editColors[i].val.HasValue) { // カラータイプが異なる場合は、インスタンスを作り直して色をコピー if (editColors[i].type == colProp.colorType) { createdColors[i] = editColors[i]; } else { createdColors[i] = new EditColor(editColors[i].val, colProp.colorType); } } else { var ec = new EditColor(null, colProp.colorType); if (material != null) { ec.Set( material.GetColor(colProps[i].propId) ); } else { ec.Set( (original != null)? original.GetColor(i): colProps[i].defaultVal ); } createdColors[i] = ec; } } editColors = createdColors; var props = sdrType.fProps; var createdVals = new EditValue[props.Length]; for (int i=0; i<props.Length; i++) { float val; if (material != null) { val = material.GetFloat(props[i].propId); } else { val = props[i].defaultVal;//(original != null)? original.GetColor(i): Color.white; } createdVals[i] = new EditValue(val, props[i].range); } this.editVals = createdVals; // テクスチャ情報の初期化 foreach (var texProp in sdrType.texProps) { // セットしてないテクスチャは空テクスチャをセット if (!material.HasProperty(texProp.keyName)) { material.SetTexture(texProp.propId, new Texture()); } } type = sdrType; }
public CCMaterial(Material m, ShaderType type) { name = m.name; shader = m.shader.name; foreach (var colProp in type.colProps) { var ccc = new CCColor(m.GetColor(colProp.propId)); switch (colProp.key) { case PropKey._Color: color = ccc; break; case PropKey._ShadowColor: shadowColor = ccc; break; case PropKey._RimColor: rimColor = ccc; break; case PropKey._OutlineColor: outlineColor = ccc; break; // _SpecColor, // _ReflectColor, // _Emission, } } foreach (var prop in type.fProps) { var fVal = m.GetFloat(prop.propId); switch (prop.key) { case PropKey._Shininess: shininess = fVal; break; case PropKey._OutlineWidth: outlineWidth = fVal; break; case PropKey._RimPower: rimPower = fVal; break; case PropKey._RimShift: rimShift = fVal; break; case PropKey._HiRate: hiRate = fVal; break; case PropKey._HiPow: hiPow = fVal; break; case PropKey._Cutoff: cutoff = fVal; break; case PropKey._Cutout: cutout = fVal; break; case PropKey._FloatValue1: floatVal1 = fVal; break; case PropKey._FloatValue2: floatVal2 = fVal; break; case PropKey._FloatValue3: floatVal3 = fVal; break; case PropKey._ZTest: ztest = fVal; break; case PropKey._ZTest2: ztest2 = fVal; break; case PropKey._ZTest2Alpha: ztest2Alpha = fVal; break; } } }
protected ACCMaterial(ShaderType type) { this.type = type; InitType(); }
public static List<ACCTexture> Load(Material mate, ShaderType type) { if (type == null) { type = ShaderType.Resolve(mate.shader.name); } var ret = new List<ACCTexture>(type.texProps.Length); foreach (var texProp in type.texProps) { var tex = ACCTexture.Create(mate, texProp, type); if (tex != null) ret.Add(tex); } return ret; }
public ACCTexturesView(Material m, int matNo) { this.material = m; //this.matType = ShaderMapper.resolve(m.shader.name); // this.original = Load(m, matType); this.type = ShaderType.Resolve(m.shader.name); this.original = Load(m, type); this.edited = new List<ACCTexture>(original.Count); foreach ( ACCTexture tex in original ) { edited.Add(new ACCTexture(tex)); } this.matNo = matNo; }
public void Update(ShaderType sdrType) { if (type == sdrType) { return; } // TODO 変更前のマテリアルから設定値をロード // 同一長の場合でも更新(Alphaの有無が異なるケースがある) var colProps = sdrType.colProps; var createdColors = new EditColor[colProps.Length]; var createdPickers = new ColorPicker[colProps.Length]; var size = UIParams.Instance.itemHeight; for (var i = 0; i < colProps.Length; i++) { var colProp = colProps[i]; if (i < editColors.Length) { // カラータイプが異なる場合は、インスタンスを作り直して色をコピー if (editColors[i].type == colProp.colorType) { createdColors[i] = editColors[i]; } else { createdColors[i] = new EditColor(editColors[i].val, colProp.colorType, colProp.composition); } createdPickers[i] = pickers[i]; } else { Color color; if (material != null) { color = material.GetColor(colProp.propId); } else { color = (Original != null)? Original.GetColor(i): colProp.defaultVal; } createdColors[i] = new EditColor(color, colProp.colorType, colProp.composition); createdPickers[i] = new ColorPicker(presetMgr) { ColorTex = new Texture2D(size, size, TextureFormat.RGB24, false) }; createdPickers[i].SetTexColor(ref createdColors[i].val); } } editColors = createdColors; pickers = createdPickers; var props = sdrType.fProps; var createdVals = new EditValue[props.Length]; for (var i = 0; i < props.Length; i++) { var val = (material != null)? material.GetFloat(props[i].propId) : props[i].defaultVal; createdVals[i] = new EditValue(val, props[i].range); } editVals = createdVals; // テクスチャ情報の初期化 foreach (var texProp in sdrType.texProps) { // セットしてないテクスチャは空テクスチャをセット if (material != null && !material.HasProperty(texProp.keyName)) { material.SetTexture(texProp.propId, new Texture()); } } type = sdrType; }