MCPcopy Create free account
hub / github.com/ObEngine/ObEngine / getSpriteByPosition

Method getSpriteByPosition

src/Core/Scene/Scene.cpp:630–657  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

628 }
629
630 Graphics::Sprite* Scene::getSpriteByPosition(
631 const Transform::UnitVector& position, const int layer)
632 {
633 std::vector<Transform::Referential> rectPts = { Transform::Referential::TopLeft,
634 Transform::Referential::TopRight, Transform::Referential::BottomRight,
635 Transform::Referential::BottomLeft };
636 const Transform::UnitVector zeroOffset(0, 0);
637
638 std::vector<Graphics::Sprite*> spritesOnLayer = this->getSpritesByLayer(layer);
639 Transform::UnitVector camera
640 = -(m_camera.getPosition().to<Transform::Units::ScenePixels>());
641 for (const auto& sprite : spritesOnLayer)
642 {
643 Collision::PolygonalCollider positionCollider("positionCollider");
644 positionCollider.addPoint(
645 sprite->getPositionTransformer()(position, camera, layer));
646 Collision::PolygonalCollider sprCollider("sprCollider");
647 for (Transform::Referential& ref : rectPts)
648 {
649 sprCollider.addPoint(sprite->getPosition(ref));
650 }
651 if (sprCollider.doesCollide(positionCollider, zeroOffset))
652 {
653 return sprite;
654 }
655 }
656 return nullptr;
657 }
658
659 Graphics::Sprite& Scene::getSprite(const std::string& id)
660 {

Callers

nothing calls this directly

Calls 5

getSpritesByLayerMethod · 0.95
addPointMethod · 0.80
doesCollideMethod · 0.80
getPositionMethod · 0.45

Tested by

no test coverage detected