bool RenderableParticleEffectEntityItem::addToScene(EntityItemPointer self,
                                                    render::ScenePointer scene,
                                                    render::PendingChanges& pendingChanges) {

    auto particlePayload = std::shared_ptr<ParticlePayload>(new ParticlePayload(shared_from_this()));
    particlePayload->setPipeline(_untexturedPipeline);
    _renderItemId = scene->allocateID();
    auto renderData = ParticlePayload::Pointer(particlePayload);
    auto renderPayload = render::PayloadPointer(new ParticlePayload::Payload(renderData));
    pendingChanges.resetItem(_renderItemId, renderPayload);
    _scene = scene;
    return true;
}
bool RenderableLightEntityItem::addToScene(const EntityItemPointer& self, const render::ScenePointer& scene, render::Transaction& transaction) {
    _myItem = scene->allocateID();

    auto renderItem = std::make_shared<LightPayload>();
    updateRenderItemFromEntity((*renderItem));

    auto renderPayload = std::make_shared<LightPayload::Payload>(renderItem);

    render::Item::Status::Getters statusGetters;
    makeEntityItemStatusGetters(self, statusGetters);
    renderPayload->addStatusGetters(statusGetters);

    transaction.resetItem(_myItem, renderPayload);

    return true;
}
bool RenderableZoneEntityItem::addToScene(const EntityItemPointer& self, const render::ScenePointer& scene,
    render::Transaction& transaction) {
    _myMetaItem = scene->allocateID();

    auto renderData = std::make_shared<RenderableZoneEntityItemMeta>(self);
    auto renderPayload = std::make_shared<RenderableZoneEntityItemMeta::Payload>(renderData);
    updateKeyZoneItemFromEntity((*renderData));
    updateKeySunFromEntity((*renderData));
    updateKeyAmbientFromEntity((*renderData));
    updateKeyBackgroundFromEntity((*renderData));

    render::Item::Status::Getters statusGetters;
    makeEntityItemStatusGetters(getThisPointer(), statusGetters);
    renderPayload->addStatusGetters(statusGetters);

    transaction.resetItem(_myMetaItem, renderPayload);

    return true;
}