updating all the entity types when their bound is changing

This commit is contained in:
samcake 2016-02-10 16:41:09 -08:00
parent b295a3732e
commit 6922c9adf0
5 changed files with 34 additions and 3 deletions

View file

@ -37,8 +37,6 @@ public:
typedef render::Payload<RenderableEntityItemProxy> Payload;
typedef Payload::DataPointer Pointer;
int touch = 0;
EntityItemPointer entity;
};
@ -79,7 +77,6 @@ public:
render::ScenePointer scene = AbstractViewStateInterface::instance()->getMain3DScene();
pendingChanges.updateItem<RenderableEntityItemProxy>(_myItem, [](RenderableEntityItemProxy& data) {
data.touch++;
});
scene->enqueuePendingChanges(pendingChanges);

View file

@ -310,3 +310,14 @@ void RenderableParticleEffectEntityItem::createPipelines() {
_texturedPipeline = gpu::Pipeline::create(program, state);
}
}
void RenderableParticleEffectEntityItem::notifyBoundChanged() {
if (_renderItemId == render::Item::INVALID_ITEM_ID) {
return;
}
render::PendingChanges pendingChanges;
pendingChanges.updateItem<ParticlePayloadData>(_renderItemId, [](ParticlePayloadData& payload) {
});
_scene->enqueuePendingChanges(pendingChanges);
}

View file

@ -29,6 +29,11 @@ public:
virtual void removeFromScene(EntityItemPointer self, render::ScenePointer scene, render::PendingChanges& pendingChanges) override;
protected:
virtual void locationChanged() override { EntityItem::locationChanged(); notifyBoundChanged(); }
virtual void dimensionsChanged() override { EntityItem::dimensionsChanged(); notifyBoundChanged(); }
void notifyBoundChanged();
void createPipelines();
render::ScenePointer _scene;

View file

@ -234,3 +234,17 @@ void RenderableZoneEntityItem::removeFromScene(EntityItemPointer self, std::shar
_model->removeFromScene(scene, pendingChanges);
}
}
void RenderableZoneEntityItem::notifyBoundChanged() {
if (_myMetaItem == render::Item::INVALID_ITEM_ID) {
return;
}
render::PendingChanges pendingChanges;
render::ScenePointer scene = AbstractViewStateInterface::instance()->getMain3DScene();
pendingChanges.updateItem<RenderableZoneEntityItemMeta>(_myMetaItem, [](RenderableZoneEntityItemMeta& data) {
});
scene->enqueuePendingChanges(pendingChanges);
}

View file

@ -40,6 +40,10 @@ public:
virtual void removeFromScene(EntityItemPointer self, std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges);
private:
virtual void locationChanged() override { EntityItem::locationChanged(); notifyBoundChanged(); }
virtual void dimensionsChanged() override { EntityItem::dimensionsChanged(); notifyBoundChanged(); }
void notifyBoundChanged();
Model* getModel();
void initialSimulation();
void updateGeometry();