Exemplo n.º 1
0
 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();
 }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
 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;
 }