mirror of
https://github.com/lubosz/overte.git
synced 2025-08-12 23:15:32 +02:00
updating all the entity types when their bound is changing
This commit is contained in:
parent
b295a3732e
commit
6922c9adf0
5 changed files with 34 additions and 3 deletions
|
@ -37,8 +37,6 @@ public:
|
||||||
typedef render::Payload<RenderableEntityItemProxy> Payload;
|
typedef render::Payload<RenderableEntityItemProxy> Payload;
|
||||||
typedef Payload::DataPointer Pointer;
|
typedef Payload::DataPointer Pointer;
|
||||||
|
|
||||||
int touch = 0;
|
|
||||||
|
|
||||||
EntityItemPointer entity;
|
EntityItemPointer entity;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -79,7 +77,6 @@ public:
|
||||||
render::ScenePointer scene = AbstractViewStateInterface::instance()->getMain3DScene();
|
render::ScenePointer scene = AbstractViewStateInterface::instance()->getMain3DScene();
|
||||||
|
|
||||||
pendingChanges.updateItem<RenderableEntityItemProxy>(_myItem, [](RenderableEntityItemProxy& data) {
|
pendingChanges.updateItem<RenderableEntityItemProxy>(_myItem, [](RenderableEntityItemProxy& data) {
|
||||||
data.touch++;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
scene->enqueuePendingChanges(pendingChanges);
|
scene->enqueuePendingChanges(pendingChanges);
|
||||||
|
|
|
@ -310,3 +310,14 @@ void RenderableParticleEffectEntityItem::createPipelines() {
|
||||||
_texturedPipeline = gpu::Pipeline::create(program, state);
|
_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);
|
||||||
|
}
|
|
@ -29,6 +29,11 @@ public:
|
||||||
virtual void removeFromScene(EntityItemPointer self, render::ScenePointer scene, render::PendingChanges& pendingChanges) override;
|
virtual void removeFromScene(EntityItemPointer self, render::ScenePointer scene, render::PendingChanges& pendingChanges) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual void locationChanged() override { EntityItem::locationChanged(); notifyBoundChanged(); }
|
||||||
|
virtual void dimensionsChanged() override { EntityItem::dimensionsChanged(); notifyBoundChanged(); }
|
||||||
|
|
||||||
|
void notifyBoundChanged();
|
||||||
|
|
||||||
void createPipelines();
|
void createPipelines();
|
||||||
|
|
||||||
render::ScenePointer _scene;
|
render::ScenePointer _scene;
|
||||||
|
|
|
@ -234,3 +234,17 @@ void RenderableZoneEntityItem::removeFromScene(EntityItemPointer self, std::shar
|
||||||
_model->removeFromScene(scene, pendingChanges);
|
_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);
|
||||||
|
}
|
||||||
|
|
|
@ -40,6 +40,10 @@ public:
|
||||||
virtual void removeFromScene(EntityItemPointer self, std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges);
|
virtual void removeFromScene(EntityItemPointer self, std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
virtual void locationChanged() override { EntityItem::locationChanged(); notifyBoundChanged(); }
|
||||||
|
virtual void dimensionsChanged() override { EntityItem::dimensionsChanged(); notifyBoundChanged(); }
|
||||||
|
void notifyBoundChanged();
|
||||||
|
|
||||||
Model* getModel();
|
Model* getModel();
|
||||||
void initialSimulation();
|
void initialSimulation();
|
||||||
void updateGeometry();
|
void updateGeometry();
|
||||||
|
|
Loading…
Reference in a new issue