using System.Collections.Generic;
using Microsoft.Xna.Framework.Content.Pipeline.Processors;
using Microsoft.Xna.Framework.Content;
using MikuMikuDance.XNA.Model.ModelData;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content.Pipeline.Graphics;

namespace MikuMikuDance.XNA.Model
{

    /// <summary>
    /// TypeWrite前のMMDModelクラス
    /// </summary>
    [ContentSerializerRuntimeType("MikuMikuDance.XNA.Model.ModelData.MMDModelData, MikuMikuDanceXNA")]
    public class MMDModelContent
    {
        /// <summary>
        /// XNA用モデルデータ
        /// </summary>
        public ModelContent ModelData { get; set; }
        /// <summary>
        /// MMD用のボーン情報
        /// </summary>
        public List<MMDBoneData> Bones { get; set; }
        /// <summary>
        /// MMD用の表情情報
        /// </summary>
        public List<MMDSkinData> Skins { get; set; }
        /// <summary>
        /// 表情で用いる頂点数
        /// </summary>
        public int NumVertexForFace { get; set; }
        /// <summary>
        /// MMD用の剛体情報
        /// </summary>
        public List<MMDRigid> Rigids { get; set; }
        /// <summary>
        /// MMD用のジョイント情報
        /// </summary>
        public List<MMDJoint> Joints { get; set; }
        /// <summary>
        /// シェーダに渡す表情頂点情報
        /// </summary>
        public Vector4[] FaceData { get; set; }
        /// <summary>
        /// シェーダに表情頂点情報を渡す際に使用する頂点テクスチャサイズX
        /// </summary>
        public int FaceDataTextureSizeX { get; set; }
        /// <summary>
        /// シェーダに渡す際に使用する頂点テクスチャサイズY
        /// </summary>
        public int FaceDataTextureSizeY { get; set; }
        /// <summary>
        /// シェーダに表情頂点位置を渡す際に使用する頂点テクスチャサイズX
        /// </summary>
        public int FaceVertTextureSizeX { get; set; }
        /// <summary>
        /// シェーダに表情頂点位置を渡す際に使用する頂点テクスチャサイズY
        /// </summary>
        public int FaceVertTextureSizeY { get; set; }
        /// <summary>
        /// トゥーンテクスチャ
        /// </summary>
        /// <remarks>このリファレンスは全てのモデルで共通する物が当てはめられる</remarks>
        public ToonTexturesContent ToonTextures { get; set; }
        
    }
}
