Find the Best Demos and Examples

Check out this quick tour to find the best demos and examples for you, and to see how the Felgo SDK can help you to develop your next app or game!

Forums

OverviewFelgo 2 Support (Qt 5) › Difference between action of removePooledEntities() and entity.removeEntity()

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #8676

    Martin

    I have this code:

        function exitGameScene() {
            /*
            var platforms = entityManager.getEntityArrayByType("platform")
            for (var i=0, platform; platform=platforms[i++];) {
                platform.removeEntity()
            }
            var keys = entityManager.getEntityArrayByType("key")
            for (var i=0, key; key=keys[i++];) {
                key.removeEntity()
            }
            */
    
            entityManager.removeAllPooledEntities()

    As you can guess, platforms and keys are the pooled entities that I have.

    The commented section does what I need, but the call to removeAllPooledEntities() does not.

    I can see removeAllPooledEntities() doing this:

    qml: EntityManager: removeAllPooledEntities()

    qml: EntityBase: onDestruction(), emit entityDestroyed signal for entityId platform_9

    qml: EntityManager: just removed static entity defined in QML file with id platform_9 and type platform from active entities

    yet when I do it this way, the image of the platform remains in the level next time the level is activated.

    (The platform itself is not present next time: it does not affect the level in anyway, it is just drawn – which is why I am doing this removal in the first place).

    This is not the case when I do the individual removeEntity() calls.

    What’s going on there?

    • This topic was modified 5 years, 9 months ago by  GreenAsJade.
    • This topic was modified 5 years, 9 months ago by  GreenAsJade.
    • This topic was modified 5 years, 9 months ago by  GreenAsJade.
    #8680

    Martin

    Update: actually, neither of these work reliably – it turns out in both instances I sometimes get visual artifacts from the finished level on the next level 🙁

     

    #8681

    Martin

    For the record, I’m now doing this, to get rid of “hangover images” on the next level:

        function exitGameScene() {
            // Have to do this, to ensure they aren't on the screen next time
            var platforms = entityManager.getEntityArrayByType("platform")
            for (var i=0, platform; platform=platforms[i++];) {
                platform.x = -platform.width
            }
            var keys = entityManager.getEntityArrayByType("key")
            for (var i=0, key; key=keys[i++];) {
                key.x = -key.width
            }

     

    It’s obviously not “right”, but I can’t tell if the problem is bad use of Felgo by me, or a bug in Felgo!   At least it seems to be working…

     

    #8691

    Alex
    Felgo Team

    Hi Martin,

    Pooled entities are entities that got created, then destroyed and are now waiting in the pool for re-use. So removeAllPooledEntities() will remove those, but will not affect any active entities.

    Calling removeEntitiy() on an entity will do one of 2 things:

    • If the entity has poolingEnabled set to true (and also the EntityManager has poolingEnabled set to true), then the entity will disappear and be moved to the pool for re-use
    • If pooling is not enabled, the entity will be completely destroyed and disappear

    Cheers,
    Alex

     

Viewing 4 posts - 1 through 4 (of 4 total)

RSS feed for this thread

You must be logged in to reply to this topic.