public void removeFan(Fan a) { fans.Remove(a); }
void CheckMouseClick() { MouseState mouseState = Mouse.GetState(); if (mouseState.LeftButton == ButtonState.Pressed && previousState.LeftButton == ButtonState.Released) { Ray pickRay = GetPickRay(); //Nullable<float> result = pickRay.Intersects(triangleBB); int selectedIndex = -1; float selectedDistance = float.MaxValue; for (int i = 0; i < buildingBoundingBoxes.Length; i++) { Nullable<float> result = pickRay.Intersects(buildingBoundingBoxes[i]); if (result.HasValue == true) { if (result.Value < selectedDistance) { selectedIndex = i; selectedDistance = result.Value; } } } if (selectedIndex > -1) { //selected grid //buildingBoundingBoxes[selectedIndex]. //buildingBoundingBoxes[selectedIndex] = selectedTexture; System.Diagnostics.Debug.WriteLine(selectedIndex); bool fanExists = false; Vector3 fanPosition = new Vector3((buildingBoundingBoxes[selectedIndex].GetCorners()[0].X + buildingBoundingBoxes[selectedIndex].GetCorners()[1].X)/2, buildingBoundingBoxes[selectedIndex].GetCorners()[0].Y, (buildingBoundingBoxes[selectedIndex].GetCorners()[0].Z + buildingBoundingBoxes[selectedIndex].GetCorners()[4].Z)/2); foreach (Fan f in fans) { if(f.WorldPosition == fanPosition) { System.Diagnostics.Debug.WriteLine(f.WorldPosition); f.CurrentAngle += MathHelper.PiOver4; fanExists = true; System.Diagnostics.Debug.WriteLine("ROTATED"); System.Diagnostics.Debug.WriteLine(f.WorldPosition); } } if(!fanExists) { Fan temp = new Fan(ScreenManager.Game); temp.Camera = camera; temp.WorldRotation = Quaternion.CreateFromAxisAngle(Vector3.UnitX, MathHelper.PiOver2); temp.WorldPosition = new Vector3((buildingBoundingBoxes[selectedIndex].GetCorners()[0].X + buildingBoundingBoxes[selectedIndex].GetCorners()[1].X)/2, buildingBoundingBoxes[selectedIndex].GetCorners()[0].Y, (buildingBoundingBoxes[selectedIndex].GetCorners()[0].Z + buildingBoundingBoxes[selectedIndex].GetCorners()[4].Z)/2); ScreenManager.Game.Components.Add(temp); fans.Add(temp); } } } if (mouseState.RightButton == ButtonState.Pressed && previousState.RightButton == ButtonState.Released) { Ray pickRay = GetPickRay(); //Nullable<float> result = pickRay.Intersects(triangleBB); int selectedIndex = -1; float selectedDistance = float.MaxValue; for (int i = 0; i < buildingBoundingBoxes.Length; i++) { Nullable<float> result = pickRay.Intersects(buildingBoundingBoxes[i]); if (result.HasValue == true) { if (result.Value < selectedDistance) { selectedIndex = i; selectedDistance = result.Value; } } } if (selectedIndex > -1) { //selected grid //buildingBoundingBoxes[selectedIndex]. //buildingBoundingBoxes[selectedIndex] = selectedTexture; System.Diagnostics.Debug.WriteLine(selectedIndex); bool fanExists = false; Vector3 fanPosition = new Vector3((buildingBoundingBoxes[selectedIndex].GetCorners()[0].X + buildingBoundingBoxes[selectedIndex].GetCorners()[1].X) / 2, buildingBoundingBoxes[selectedIndex].GetCorners()[0].Y, (buildingBoundingBoxes[selectedIndex].GetCorners()[0].Z + buildingBoundingBoxes[selectedIndex].GetCorners()[4].Z) / 2); Fan toRemove = null; foreach (Fan f in fans) { if (f.WorldPosition == fanPosition) { //fans.Remove(f); toRemove = f; ScreenManager.Game.Components.Remove(f); System.Diagnostics.Debug.WriteLine("REMOVED"); } } if (toRemove != null) { fans.Remove(toRemove); } if (!fanExists) { } } } previousState = mouseState; }