From e00a5ebf737bc9f73611c7b37ee573d793a8dd1c Mon Sep 17 00:00:00 2001 From: Lev Date: Thu, 17 Aug 2023 12:41:56 +0300 Subject: [PATCH] Fix bags in RayCast --- .../GameCore/Managers/PhysicsManager.cs | 92 +++++++++---------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/DangerousD/GameCore/Managers/PhysicsManager.cs b/DangerousD/GameCore/Managers/PhysicsManager.cs index 7ae99f9..ba19ece 100644 --- a/DangerousD/GameCore/Managers/PhysicsManager.cs +++ b/DangerousD/GameCore/Managers/PhysicsManager.cs @@ -136,7 +136,7 @@ namespace DangerousD.GameCore.Managers Rectangle rectangle; Vector2 distance = entity1.Pos - entity2.Pos; - rectangle = new Rectangle((int)entity1.Pos.X, (int)entity1.Pos.Y, entity2.Width, entity2.Height); + rectangle = new Rectangle((int)entity1.Pos.X, (int)entity1.Pos.Y - 5, entity2.Width, entity2.Height); GameObject gameObject = null; double length = distance.Length(); @@ -144,32 +144,31 @@ namespace DangerousD.GameCore.Managers { rectangle.X = (int)(entity2.Pos.X + (i / length) * distance.X); rectangle.Y = (int)(entity2.Pos.Y + (i / length) * distance.Y); + for (int j = 0; j < AppManager.Instance.GameManager.entities.Count; j++) + { + if (AppManager.Instance.GameManager.entities[i].Rectangle.Intersects(rectangle)) + { + return AppManager.Instance.GameManager.entities[i]; + } + } + for (int r = 0; r < AppManager.Instance.GameManager.mapObjects.Count; r++) + { + if (AppManager.Instance.GameManager.mapObjects[i].Rectangle.Intersects(rectangle)) + { + return AppManager.Instance.GameManager.mapObjects[i]; + } + } + for (int w = 0; w < AppManager.Instance.GameManager.livingEntities.Count; w++) + { + if (AppManager.Instance.GameManager.livingEntities[i].Rectangle.Intersects(rectangle)) + { + return AppManager.Instance.GameManager.livingEntities[i]; + } + } } - for (int i = 0; i < AppManager.Instance.GameManager.entities.Count; i++) - { - if (AppManager.Instance.GameManager.entities[i].Rectangle.Intersects(rectangle)) - { - return AppManager.Instance.GameManager.entities[i]; - } - } - for (int i = 0; i < AppManager.Instance.GameManager.mapObjects.Count; i++) - { - if (AppManager.Instance.GameManager.mapObjects[i].Rectangle.Intersects(rectangle)) - { - return AppManager.Instance.GameManager.mapObjects[i]; - } - } - - - for (int i = 0; i < AppManager.Instance.GameManager.livingEntities.Count; i++) - { - if (AppManager.Instance.GameManager.livingEntities[i].Rectangle.Intersects(rectangle)) - { - return AppManager.Instance.GameManager.livingEntities[i]; - } - } - return gameObject; + + return null; } public GameObject RayCast(LivingEntity entity1, Vector2 targetCast) { @@ -182,28 +181,29 @@ namespace DangerousD.GameCore.Managers { rectangle.X = (int)(targetCast.X + (i / k) * direction.X); rectangle.Y = (int)(targetCast.Y + (i / k) * direction.X); + for (int j = 0; j < AppManager.Instance.GameManager.entities.Count; j++) + { + if (AppManager.Instance.GameManager.entities[i].Rectangle.Intersects(rectangle)) + { + return AppManager.Instance.GameManager.entities[i]; + } + } + for (int r = 0; r < AppManager.Instance.GameManager.mapObjects.Count; r++) + { + if (AppManager.Instance.GameManager.mapObjects[i].Rectangle.Intersects(rectangle)) + { + return AppManager.Instance.GameManager.mapObjects[i]; + } + } + for (int w = 0; w < AppManager.Instance.GameManager.livingEntities.Count; w++) + { + if (AppManager.Instance.GameManager.livingEntities[i].Rectangle.Intersects(rectangle)) + { + return AppManager.Instance.GameManager.livingEntities[i]; + } + } } - for (int i = 0; i < AppManager.Instance.GameManager.entities.Count; i++) - { - if (AppManager.Instance.GameManager.entities[i].Rectangle.Intersects(rectangle)) - { - return AppManager.Instance.GameManager.entities[i]; - } - } - for (int i = 0; i < AppManager.Instance.GameManager.mapObjects.Count; i++) - { - if (AppManager.Instance.GameManager.mapObjects[i].Rectangle.Intersects(rectangle)) - { - return AppManager.Instance.GameManager.mapObjects[i]; - } - } - for (int i = 0; i < AppManager.Instance.GameManager.livingEntities.Count; i++) - { - if (AppManager.Instance.GameManager.livingEntities[i].Rectangle.Intersects(rectangle)) - { - return AppManager.Instance.GameManager.livingEntities[i]; - } - } + return null; } }