using System.Collections.Generic;
//using BulletX.Dynamics;

namespace MikuMikuDance.XNA.Model
{
    /// <summary>
    /// 物理演算を扱うクラス
    /// model has a MMDPhysicsの関係
    /// </summary>
    class MMDPhysics
    {
        ////親となるモデル
        //MMDModel model;
        ////BulletXのワールドクラス
        //DiscreteDynamicsWorld Physic { get; set; }
        ////モデルのボーンマネージャ
        //MMDBoneManager BoneManager { get; set; }
        ////MMDの剛体
        //internal List<MMDPhisicsObject> Rigids { get; private set; }
        ////MMDのジョイント
        //internal List<MMDJoint> Joints { get; private set; }
        //// コンストラクタ
        internal MMDPhysics(MMDModel mmdmodel)
        {
        //    model = mmdmodel;
        //    Rigids = new List<MMDPhisicsObject>();
        //    Joints = new List<MMDJoint>();
        }
        //初期化
        internal void Initialize()
        {
        //    Physic = model.mmdXNA.Physic;
        //    BoneManager = model.BoneManager;
        //    Rigids.Clear();
        //    Joints.Clear();
        //    //剛体の作成
        //    for (int i = 0; i < model.ModelData.Rigids.Count; i++)
        //    {
        //        Rigids.Add(MMDPhisicsObject.PhisicsObjectFactory(model.ModelData.Rigids[i], model, Physic));
        //    }
        //    //ジョイント(拘束)の作成
        //    for (int i = 0; i < model.ModelData.Joints.Count; i++)
        //    {
        //        MMDPhisicsObject phisic0 = Rigids[(int)model.ModelData.Joints[i].RigidBodyA];
        //        MMDPhisicsObject phisic1 = Rigids[(int)model.ModelData.Joints[i].RigidBodyB];
        //        MMDJoint joint = new MMDJoint();
        //        joint.Initialize(phisic0.body, phisic1.body,model.ModelData.Joints[i],Physic);
        //        Joints.Add(joint);
                
        //    }
        //    //剛体を関連ボーン番号をもとにソート
        //    Rigids.Sort(new MMDPhisicsSorter());
            
        }
        internal void Update()
        {
        //    //爆発修正（ボツ)
        //    /*foreach (var i in Joints)
        //        i.RestorExplosion();*/
        //    //剛体の運動差分→ボーンへの適応
        //    foreach (var i in Rigids)
        //    {
        //        i.ApplyRigitToBone();
        //    }
        //    //ボーン座標更新
        //    BoneManager.UpdateWorldTransforms();
        //    BoneManager.UpdateSkinTransforms();
        //    //ボーンの運動→剛体への適応
        //    foreach (var i in Rigids)
        //    {
        //        i.ApplyBoneToRigit();
        //    }
        }

        //internal void Draw()
        //{
        //    if (model.mmdXNA.debugDrawer != null)
        //    {
        //        foreach (var i in Rigids)
        //        {
        //            i.Draw();
        //        }
        //    }
        //}*/
    }
}
