| 75 | rayCheck(std::move(rayCheck)) {} |
| 76 | |
| 77 | Json DamageSource::toJson() const { |
| 78 | Json damageAreaJson; |
| 79 | if (auto p = damageArea.ptr<PolyF>()) |
| 80 | damageAreaJson = jsonFromPolyF(*p); |
| 81 | else if (auto l = damageArea.ptr<Line2F>()) |
| 82 | damageAreaJson = jsonFromLine2F(*l); |
| 83 | |
| 84 | Json knockbackJson; |
| 85 | if (auto p = knockback.ptr<float>()) |
| 86 | knockbackJson = *p; |
| 87 | else if (auto p = knockback.ptr<Vec2F>()) |
| 88 | knockbackJson = jsonFromVec2F(*p); |
| 89 | |
| 90 | return JsonObject{{"damageType", DamageTypeNames.getRight(damageType)}, |
| 91 | {"damageArea", damageAreaJson}, |
| 92 | {"damage", damage}, |
| 93 | {"trackSourceEntity", trackSourceEntity}, |
| 94 | {"sourceEntityId", sourceEntityId}, |
| 95 | {"team", team.toJson()}, |
| 96 | {"damageRepeatGroup", jsonFromMaybe(damageRepeatGroup)}, |
| 97 | {"damageRepeatTimeout", jsonFromMaybe(damageRepeatTimeout)}, |
| 98 | {"damageSourceKind", damageSourceKind}, |
| 99 | {"statusEffects", statusEffects.transformed(jsonFromEphemeralStatusEffect)}, |
| 100 | {"knockback", knockbackJson}, |
| 101 | {"rayCheck", rayCheck}}; |
| 102 | } |
| 103 | |
| 104 | bool DamageSource::intersectsWithPoly(WorldGeometry const& geometry, PolyF const& targetPoly) const { |
| 105 | if (auto poly = damageArea.ptr<PolyF>()) |
nothing calls this directly
no test coverage detected