Learn what Felgo offers to help your business succeed. Start your free evaluation today! Felgo for Your Business

Forums

OverviewFelgo 3 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 9 years, 3 months ago by  GreenAsJade.
    • This topic was modified 9 years, 3 months ago by  GreenAsJade.
    • This topic was modified 9 years, 3 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.

Qt_Technology_Partner_RGB_475 Qt_Service_Partner_RGB_475_padded