private void LoadObject(int idx)
 {
     if (flag)
     {
         building = provider.GetBuildingAt(idx);
     }
     else
     {
         character = provider.GetCharacterAt(idx);
     }
 }
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // TODO: use this.Content to load your game content here

            // Hoc doi tuong
            string[] ObjectName;
            int[] CardSizeWidth;
            int[] CardSizeHeight;
            ReadObjectFromXML("ObjectConfig.xml", out nObject, out ObjectName, out CardSizeWidth, out CardSizeHeight);

            LearnObject(ObjectName, CardSizeWidth, CardSizeHeight, nObject);
            SetCalibrationInfoFromXML("camera.xml");
            StreamReader sr = new StreamReader("Input.txt");
            sVideoPath = sr.ReadLine();
            sr.Close();

            //cap = new Capture(sVideoPath);
            cap = new Capture(0);

            building = provider.GetBuildingAt(0);
            character = provider.GetCharacterAt(0);
        }
        private void LoadCharacters(ContentManager content)
        {
            #region Declaration
            string[] strModelAssetPaths =
            {
                @"Models\Army\BodyModels\dragonknight_dragon",
                @"Models\Army\BodyModels\knight",
                @"Models\Army\BodyModels\forgottenone",
                @"Models\Army\BodyModels\forgottentwo",
                @"Models\Army\BodyModels\hunter",
                @"Models\Army\BodyModels\linfang",
                @"Models\Army\BodyModels\ryla",
                @"Models\Army\BodyModels\ddz",
                @"Models\Army\BodyModels\hakiru",
                @"Models\Army\BodyModels\terminator"
            };

            string[] strTextureAssetPaths =
            {
                @"Images\Army\BodyTextures\dragonknight_dragon_red",
                @"Images\Army\BodyTextures\knight",
                @"Images\Army\BodyTextures\forgotten_blue",
                @"Images\Army\BodyTextures\forgotten_green",
                @"Images\Army\BodyTextures\hunterred",
                @"Images\Army\BodyTextures\linfangred",
                @"Images\Army\BodyTextures\rylared",
                @"Images\Army\BodyTextures\ddz_blue",
                @"Images\Army\BodyTextures\hakiru",
                @"Images\Army\BodyTextures\terminator_ultra"
            };

            string[] strWModelAssetPaths =
            {
                @"Models\Army\WeaponModels\dragonknight_knight",
                @"Models\Army\WeaponModels\lightningSword",
                @"Models\Army\WeaponModels\forgotten_weapon",
                @"Models\Army\WeaponModels\forgotten_weapon",
                @"Models\Army\WeaponModels\hunter_weapon",
                @"Models\Army\WeaponModels\linfang_weapon",
                @"Models\Army\WeaponModels\ryla_weapon",
                @"Models\Army\WeaponModels\ddz_weapon",
                @"Models\Army\WeaponModels\hakiru_weapon",
                @"Models\Army\WeaponModels\terminator_weapon"
            };

            string[] strWTextureAssetPaths =
            {
                @"Images\Army\WeaponTextures\dragonknight_knight",
                @"Images\Army\WeaponTextures\lightningSword",
                @"Images\Army\WeaponTextures\forgotten_weapon",
                @"Images\Army\WeaponTextures\forgotten_weapon",
                @"Images\Army\WeaponTextures\hunter_weapon",
                @"Images\Army\WeaponTextures\linfang_weapon",
                @"Images\Army\WeaponTextures\ryla_weapon",
                @"Images\Army\WeaponTextures\ddz_weapon",
                @"Images\Army\WeaponTextures\hakiru_weapon",
                @"Images\Army\WeaponTextures\terminator_weapon"
            };

            string[] strAnimationFiles =
            {
                @"Content\MD2Animation2.xml",
                @"Content\MD2Animation1.xml",
                @"Content\MD2Animation2.xml",
                @"Content\MD2Animation2.xml",
                @"Content\MD2Animation3.xml",
                @"Content\MD2Animation2.xml",
                @"Content\MD2Animation1.xml",
                @"Content\MD2Animation2.xml",
                @"Content\MD2Animation2.xml",
                @"Content\MD2Animation1.xml"
            };
            #endregion Declaration

            for (int i = 0; i < strModelAssetPaths.Length; i++)
            {
                CCharacterObject character = new CCharacterObject();

                character.InitializeObject(
                    device,
                    content,
                    strModelAssetPaths[i],
                    strTextureAssetPaths[i],
                    strWModelAssetPaths[i],
                    strWTextureAssetPaths[i],
                    strAnimationFiles[i],
                    Vector3.Zero, characterScale, 25f);

                lstCharacters.Add(character);
            }
        }
        private CCharacterObject CreateCharacter(int index)
        {
            #region Declaration
            string[] strModelAssetPaths =
            {
                @"Models\Army\BodyModels\dragonknight_dragon",
                @"Models\Army\BodyModels\knight",
                @"Models\Army\BodyModels\forgottenone",
                @"Models\Army\BodyModels\forgottentwo",
                @"Models\Army\BodyModels\hunter",
                @"Models\Army\BodyModels\linfang",
                @"Models\Army\BodyModels\ryla",
                @"Models\Army\BodyModels\ddz",
                @"Models\Army\BodyModels\hakiru",
                @"Models\Army\BodyModels\terminator"
            };

            string[] strTextureAssetPaths =
            {
                @"Images\Army\BodyTextures\dragonknight_dragon_red",
                @"Images\Army\BodyTextures\knight",
                @"Images\Army\BodyTextures\forgotten_blue",
                @"Images\Army\BodyTextures\forgotten_green",
                @"Images\Army\BodyTextures\hunterred",
                @"Images\Army\BodyTextures\linfangred",
                @"Images\Army\BodyTextures\rylared",
                @"Images\Army\BodyTextures\ddz_blue",
                @"Images\Army\BodyTextures\hakiru",
                @"Images\Army\BodyTextures\terminator_ultra"
            };

            string[] strWModelAssetPaths =
            {
                @"Models\Army\WeaponModels\dragonknight_knight",
                @"Models\Army\WeaponModels\lightningSword",
                @"Models\Army\WeaponModels\forgotten_weapon",
                @"Models\Army\WeaponModels\forgotten_weapon",
                @"Models\Army\WeaponModels\hunter_weapon",
                @"Models\Army\WeaponModels\linfang_weapon",
                @"Models\Army\WeaponModels\ryla_weapon",
                @"Models\Army\WeaponModels\ddz_weapon",
                @"Models\Army\WeaponModels\hakiru_weapon",
                @"Models\Army\WeaponModels\terminator_weapon"
            };

            string[] strWTextureAssetPaths =
            {
                @"Images\Army\WeaponTextures\dragonknight_knight",
                @"Images\Army\WeaponTextures\lightningSword",
                @"Images\Army\WeaponTextures\forgotten_weapon",
                @"Images\Army\WeaponTextures\forgotten_weapon",
                @"Images\Army\WeaponTextures\hunter_weapon",
                @"Images\Army\WeaponTextures\linfang_weapon",
                @"Images\Army\WeaponTextures\ryla_weapon",
                @"Images\Army\WeaponTextures\ddz_weapon",
                @"Images\Army\WeaponTextures\hakiru_weapon",
                @"Images\Army\WeaponTextures\terminator_weapon"
            };

            string[] strAnimationFiles =
            {
                @"Content\MD2Animation2.xml",
                @"Content\MD2Animation1.xml",
                @"Content\MD2Animation2.xml",
                @"Content\MD2Animation2.xml",
                @"Content\MD2Animation3.xml",
                @"Content\MD2Animation2.xml",
                @"Content\MD2Animation1.xml",
                @"Content\MD2Animation2.xml",
                @"Content\MD2Animation2.xml",
                @"Content\MD2Animation1.xml"
            };
            #endregion Declaration

            CCharacterObject character = new CCharacterObject();

            character.InitializeObject(
                device,
                content,
                strModelAssetPaths[index],
                strTextureAssetPaths[index],
                strWModelAssetPaths[index],
                strWTextureAssetPaths[index],
                strAnimationFiles[index],
                Vector3.Zero, characterScale, 25f);

            return character;
        }
        public static MyEffect CreateHaloForCharacter(Game game, CCharacterObject character, CharacterHaloStyle style, CharacterHaloColor color)
        {
            IHaloController haloController;
            MyHalo halo;

            switch (style)
            {
                case CharacterHaloStyle.Style01:
                    CharacterHaloController_Style01 haloController1;
                    haloController1 = new CharacterHaloController_Style01();
                    haloController1.Scale = s;
                    haloController1.MaxHeight = character.Radius * 2;
                    haloController = haloController1;
                    break;
                case CharacterHaloStyle.Style02:
                default:
                    CharacterHaloController_Style02 haloController2;
                    haloController2 = new CharacterHaloController_Style02();
                    haloController2.Scale = s;
                    haloController = haloController2;
                    break;
            }
            Vector3 pos;
            switch (color)
            {
                case CharacterHaloColor.Blue:
                default:
                    halo = new HaloBlue(game, haloController);
                    halo.Initialize();
                    halo.Radius = character.Radius * 2;
                    pos = character.Position;
                    pos.Y -= character.Radius;
                    halo.Position = pos;
                    break;
                case CharacterHaloColor.Green:
                    halo = new HaloGreen(game, haloController);
                    halo.Initialize();
                    halo.Radius = character.Radius * 2;
                    pos = character.Position;
                    pos.Y -= character.Radius;
                    halo.Position = pos;
                    break;
                case CharacterHaloColor.Yellow:
                    halo = new HaloYellow(game, haloController);
                    halo.Initialize();
                    halo.Radius = character.Radius * 2;
                    pos = character.Position;
                    pos.Y -= character.Radius;
                    halo.Position = pos;
                    break;
                case CharacterHaloColor.White:
                    halo = new HaloWhite(game, haloController);
                    halo.Initialize();
                    halo.Radius = character.Radius * 2;
                    pos = character.Position;
                    pos.Y -= character.Radius;
                    halo.Position = pos;
                    break;
                case CharacterHaloColor.Violet:
                    halo = new HaloViolet(game, haloController);
                    halo.Initialize();
                    halo.Radius = character.Radius * 2;
                    pos = character.Position;
                    pos.Y -= character.Radius;
                    halo.Position = pos;
                    break;
            }

            return halo;
        }