public static MyEffect CreateHaloForBuilding(Game game, CBuilding building, BuildingHaloStyle style, BuildingHaloColor color) { IHaloController haloController; MyHalo halo; switch (style) { case BuildingHaloStyle.Style01: BuildingHaloController_Style01 haloController1; haloController1 = new BuildingHaloController_Style01(); haloController1.Scale = s; haloController1.MaxHeight = building.Radius; haloController = haloController1; break; case BuildingHaloStyle.Style02: default: BuildingHaloController_Style02 haloController2; haloController2 = new BuildingHaloController_Style02(); haloController2.Scale = s; haloController = haloController2; break; } switch (color) { case BuildingHaloColor.Blue: default: halo = new HaloBlue(game, haloController); halo.Initialize(); halo.Radius = building.Radius; halo.Position = building.Position; break; case BuildingHaloColor.Green: halo = new HaloGreen(game, haloController); halo.Initialize(); halo.Radius = building.Radius; halo.Position = building.Position; break; case BuildingHaloColor.Yellow: halo = new HaloYellow(game, haloController); halo.Initialize(); halo.Radius = building.Radius; halo.Position = building.Position; break; case BuildingHaloColor.White: halo = new HaloWhite(game, haloController); halo.Initialize(); halo.Radius = building.Radius; halo.Position = building.Position; break; case BuildingHaloColor.Violet: halo = new HaloViolet(game, haloController); halo.Initialize(); halo.Radius = building.Radius; halo.Position = building.Position; break; } return halo; }
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); }
/// <summary> /// This is called when the game should draw itself. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Draw(GameTime gameTime) { int nDetectedObject; int[] ObjectID = new int[nObject]; int[] ObjectPosition = new int[nObject * 8]; Image<Bgr, byte> frame = cap.QueryFrame(); if (frame != null) { IntPtr framePtr = frame.Ptr; // Detect DetectObject(frame, out nDetectedObject, ObjectID, ObjectPosition, 0); spriteBatch.Begin(); Texture2D texture = ConvertToTexture2D(GraphicsDevice, frame); spriteBatch.Draw(texture, new Vector2(0, 0), Color.White); //buildings[0].Draw(device, gameTime, Matrix.Identity, m); spriteBatch.End(); // Projection MAtrix if (nDetectedObject > 0) { for (int idx = 0; idx < nDetectedObject; idx++) { float m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34; int[] pos = new int[8]; for (int i = 0; i < 8; i++) pos[i] = ObjectPosition[idx * 8 + i]; GetProjectionMatrix(ObjectID[idx], pos, out m11, out m12, out m13, out m14, out m21, out m22, out m23, out m24, out m31, out m32, out m33, out m34); Matrix m = new Matrix(); m.M11 = m11; m.M12 = m21; m.M13 = m31; m.M14 = 0; m.M21 = m12; m.M22 = m22; m.M23 = m32; m.M24 = 0; m.M31 = m13; m.M32 = m23; m.M33 = m33; m.M34 = 0; m.M41 = m14; m.M42 = m24; m.M43 = m34; m.M44 = 1; //if (ObjectID[idx] == 0) provider.SetActive(ObjectID[idx]); building = provider.GetBuildingAt(0); //building.Update(device, gameTime); //if (f == 1) //{ //AddEffect(1, 0, flag); //} building.Draw(device, gameTime, m, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight); //building.Update(device, gameTime); //provider.GetBuildingAt(ObjectID[idx]).Draw(device, gameTime, m, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight); //character = provider.GetCharacterAt(idx); //character.Update(device, gameTime); //character.Draw(device, gameTime, m, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight); //provider.GetBuildingAt(0).Draw(device, gameTime, m, 800, 600); //else // buildings[2].Draw(device, gameTime, Matrix.Identity, m); } f = 0; } } /* GraphicsDevice.Clear(Color.Black); int resolutionWidth = Window.ClientBounds.Width; int resolutionHeight = Window.ClientBounds.Height; Vector3 cameraPos = new Vector3(0.0f, 2f, 8f); Matrix associateMatrix = Matrix.CreateLookAt(cameraPos, Vector3.Zero, Vector3.Up) * Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, (float)resolutionWidth / (float)resolutionHeight, 0.01f, 100f); // TODO: Add your drawing code here DrawObject(gameTime, associateMatrix);*/ base.Draw(gameTime); }
public void SetActive(int index) { xbuilding = lstBuildings[index]; }
private void LoadBuildings(ContentManager content) { #region Declaration string[] strModelAssetPaths = { @"Models\Buildings\mainbuilding\mainbuilding", @"Models\Buildings\japan_consulate\japan_consulate", @"Models\Buildings\japan_dojo\japan_dojo", @"Models\Buildings\japan_towncenter\japan_towncenter", @"Models\Buildings\porcelain_tower\porcelain_tower", @"Models\Buildings\summer_palace\summer_palace", @"Models\Buildings\japan_monastery\japan_monastery" //@"Models\Buildings\summer_palace\summer_palace", //@"Models\Buildings\japan_monastery\japan_monastery", /*@"Models\Buildings\mainbuilding\mainbuilding", @"Models\Buildings\china_circlebuilding\china_circlebuilding", @"Models\Buildings\japan_circlebuilding\japan_circlebuilding", @"Models\Buildings\tallbuilding\tallbuilding", @"Models\Buildings\japan_boatbuilding\japan_boatbuilding", @"Models\Buildings\china_boatbuilding\china_boatbuilding", @"Models\Buildings\china_waterbuilding\china_waterbuilding", @"Models\Buildings\japan_waterbuilding\japan_waterbuilding", @"Models\Buildings\topbuilding\topbuilding", @"Models\Buildings\imperial_palace\imperial_palace"*/ }; #endregion Declaration //building0 = new CBuilding(); //building0.InitializeObject(device, content, strModelAssetPaths[0], Vector3.Zero, buildingScale, 0); //building1 = new CBuilding(); //building1.InitializeObject(device, content, strModelAssetPaths[1], Vector3.Zero, buildingScale, 0); //xbuilding = building1; for (int i = 0; i < strModelAssetPaths.Length; i++) { CBuilding building = new CBuilding(); building.InitializeObject(device, content, strModelAssetPaths[i], Vector3.Zero, buildingScale, 0); lstBuildings.Add(building); } xbuilding = lstBuildings[0]; }