diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-08-20 20:52:56 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-08-20 20:52:56 +1000 |
commit | 33b7f17bb23b22f755aa9918939302b900aa4cd5 (patch) | |
tree | 447eb319466f634d07787febc03b59d6effeb401 | |
parent | ecadfa7e44b4591d4e22f865d7d5fc904d8caf1d (diff) |
Material Item: Allow entity overlap on non-solid collision kinds
-rw-r--r-- | source/game/items/StarMaterialItem.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/source/game/items/StarMaterialItem.cpp b/source/game/items/StarMaterialItem.cpp index 2740eb7..42f2973 100644 --- a/source/game/items/StarMaterialItem.cpp +++ b/source/game/items/StarMaterialItem.cpp @@ -190,6 +190,10 @@ void MaterialItem::fire(FireMode mode, bool shifting, bool edgeTriggered) { steps = (unsigned)ceil(magnitude * (Constants::pi / 2)); } + CollisionKind collisionKind = m_collisionOverride != TileCollisionOverride::None + ? collisionKindFromOverride(m_collisionOverride) + : Root::singleton().materialDatabase()->materialCollisionKind(m_material); + size_t total = 0; for (int i = 0; i != steps; ++i) { auto placementOrigin = aimPosition + diff * (1.0f - ((float)i / steps)); @@ -202,7 +206,7 @@ void MaterialItem::fire(FireMode mode, bool shifting, bool edgeTriggered) { // Make sure not to make any more modifications than we have consumables. if (modifications.size() > count()) modifications.resize(count()); - size_t failed = world()->applyTileModifications(modifications, false).size(); + size_t failed = world()->applyTileModifications(modifications, collisionKind <= CollisionKind::Platform).size(); if (failed < modifications.size()) { size_t placed = modifications.size() - failed; consume(placed); |