From 7d6e6edcd1414141eda747c35003867e2a6116a6 Mon Sep 17 00:00:00 2001 From: PrPleGoo Date: Fri, 17 Apr 2020 15:40:17 +0200 Subject: [PATCH] Disable collision for things inside EntityStorageComponents + enable putting mobs in lockers --- .../Items/Storage/EntityStorageComponent.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs b/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs index 77eab4ac52..75fa7111c2 100644 --- a/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs +++ b/Content.Server/GameObjects/Components/Items/Storage/EntityStorageComponent.cs @@ -150,8 +150,8 @@ namespace Content.Server.GameObjects.Components if(!entity.Transform.IsMapTransform) continue; - // only items that can be stored in an inventory, or a player, can be eaten by a locker - if(!entity.HasComponent() && !entity.HasComponent()) + // only items that can be stored in an inventory, or a mob, can be eaten by a locker + if (!entity.HasComponent() && !entity.HasComponent()) continue; if (!AddToContents(entity)) @@ -207,7 +207,8 @@ namespace Content.Server.GameObjects.Components private bool AddToContents(IEntity entity) { var collidableComponent = Owner.GetComponent(); - if(entity.TryGetComponent(out var entityCollidableComponent)) + ICollidableComponent entityCollidableComponent; + if (entity.TryGetComponent(out entityCollidableComponent)) { if(MaxSize < entityCollidableComponent.WorldAABB.Size.X || MaxSize < entityCollidableComponent.WorldAABB.Size.Y) @@ -247,6 +248,10 @@ namespace Content.Server.GameObjects.Components } Contents.Insert(entity); entity.Transform.WorldPosition = worldPos; + if (entityCollidableComponent != null) + { + entityCollidableComponent.CollisionEnabled = false; + } return true; } return false; @@ -256,7 +261,13 @@ namespace Content.Server.GameObjects.Components { foreach (var contained in Contents.ContainedEntities.ToArray()) { - Contents.Remove(contained); + if(Contents.Remove(contained)) + { + if (contained.TryGetComponent(out var entityCollidableComponent)) + { + entityCollidableComponent.CollisionEnabled = true; + } + } } }