public PmxMaterial(BinaryStream bs, byte textureIdxSize) { Name = bs.ReadTextBuf(); bs.ReadTextBuf(); Diffuse = bs.Color3(); Alpha = bs.ReadSingle(); Specular = bs.Color3(); Specularity = bs.ReadSingle(); Ambient = bs.Color3(); DrawFlag = (DrawFlagEnumes)bs.ReadByte(); EdgeColor = bs.Color4(); EdgeSize = bs.ReadSingle(); NormalTextureIndex = bs.ReadIndex(textureIdxSize); SphereTextureIndex = bs.ReadIndex(textureIdxSize); SphereMode = (SphereModeEnumes)bs.ReadByte(); if (bs.ReadByte() == 0) { IsReferredTable = true; ToonTextureIndex = bs.ReadIndex(textureIdxSize); } else { ToonTextureIndex = bs.ReadByte(); } Memo = bs.ReadTextBuf(); IndiciesCount = bs.ReadInt32(); }
public MmdMaterial(Pmd.PmdMaterial Mat, Pmd.PmdToon[] Ton) { Name = ""; Diffuse = Mat.Diffuse; Alpha = Mat.Alpha; Specular = Mat.Specular; Specularity = Mat.Specularity; Ambient = Mat.Mirror; if (Mat.EdgeFlag == 1) { DrawFlag = DrawFlagEnumes.DrawBoth; } else { DrawFlag = 0; } Memo = ""; if (Mat.TextureFileName != null) { NormalTexture = Mat.TextureFileName; } if (Mat.SphereFileName != null) { if (Mat.SphereFileName.Contains(".spa")) { AddSphereTexture = Mat.SphereFileName; } else if (Mat.SphereFileName.Contains(".sph")) { MultiplySphereTexture = Mat.SphereFileName; } } if (Mat.ToonIndex > 0 && Mat.ToonIndex <= 10) { var toon = Ton[Mat.ToonIndex].FileName; if (Regex.IsMatch(toon, @"toon(10|0[1-9]).bmp")) { ToonTexture = @"toon\" + toon; } else { ToonTexture = toon; } } IndiciesCount = Mat.IndiciesCount; }
public MmdMaterial(Pmx.PmxMaterial Mat, string[] Textures) { Name = Mat.Name; Diffuse = Mat.Diffuse; Alpha = Mat.Alpha; Specular = Mat.Specular; Specularity = Mat.Specularity; Ambient = Mat.Ambient; DrawFlag = Mat.DrawFlag; if (Mat.NormalTextureIndex >= 0) { NormalTexture = Textures[Mat.NormalTextureIndex]; } if (Mat.SphereTextureIndex >= 0) { if (Mat.SphereMode == Pmx.PmxMaterial.SphereModeEnumes.Spa) { AddSphereTexture = Textures[Mat.SphereTextureIndex]; } if (Mat.SphereMode == Pmx.PmxMaterial.SphereModeEnumes.Sph) { MultiplySphereTexture = Textures[Mat.SphereTextureIndex]; } } if (Mat.IsReferredTable) { if (Mat.ToonTextureIndex >= 0) { ToonTexture = Textures[Mat.ToonTextureIndex]; } } else { ToonTexture = "toon\\toon" + Mat.ToonTextureIndex.ToString("00") + ".bmp"; } Memo = Mat.Memo; IndiciesCount = Mat.IndiciesCount; }