Forums

OverviewV-Play 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 3 years, 6 months ago.
    • This topic was modified 3 years, 6 months ago.
    • This topic was modified 3 years, 6 months ago.
    #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 V-Play by me, or a bug in V-Play!   At least it seems to be working…

     

    #8691

    Alex
    V-Play 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.

Voted #1 for:

  • Easiest to learn
  • Most time saving
  • Best support

Develop Cross-Platform Apps and Games 50% Faster!

  • Voted the best supported, most time-saving and easiest to learn cross-platform development tool
  • Based on the Qt framework, with native performance and appearance on all platforms including iOS and Android
  • Offers a variety of plugins to monetize, analyze and engage users
FREE!
create apps
create games
cross platform
native performance
3rd party services
game network
multiplayer
level editor
easiest to learn
biggest time saving
best support