mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 18:23:54 +02:00
Drafting a solution to update the render items when ENtity is moving
This commit is contained in:
parent
8a4e2cb0c5
commit
5ef7a19d67
1 changed files with 21 additions and 1 deletions
|
@ -14,6 +14,8 @@
|
|||
|
||||
#include <render/Scene.h>
|
||||
#include <EntityItem.h>
|
||||
#include "AbstractViewStateInterface.h"
|
||||
|
||||
|
||||
// These or the icon "name" used by the render item status value, they correspond to the atlas texture used by the DrawItemStatus
|
||||
// job in the current rendering pipeline defined as of now (11/2015) in render-utils/RenderDeferredTask.cpp.
|
||||
|
@ -35,6 +37,8 @@ public:
|
|||
typedef render::Payload<RenderableEntityItemProxy> Payload;
|
||||
typedef Payload::DataPointer Pointer;
|
||||
|
||||
int touch = 0;
|
||||
|
||||
EntityItemPointer entity;
|
||||
};
|
||||
|
||||
|
@ -66,8 +70,23 @@ public:
|
|||
pendingChanges.removeItem(_myItem);
|
||||
}
|
||||
|
||||
void notifyChanged() {
|
||||
if (_myItem == render::Item::INVALID_ITEM_ID) {
|
||||
return;
|
||||
}
|
||||
|
||||
render::PendingChanges pendingChanges;
|
||||
render::ScenePointer scene = AbstractViewStateInterface::instance()->getMain3DScene();
|
||||
|
||||
pendingChanges.updateItem<RenderableEntityItemProxy>(_myItem, [](RenderableEntityItemProxy& data) {
|
||||
data.touch++;
|
||||
});
|
||||
|
||||
scene->enqueuePendingChanges(pendingChanges);
|
||||
}
|
||||
|
||||
private:
|
||||
render::ItemID _myItem;
|
||||
render::ItemID _myItem = render::Item::INVALID_ITEM_ID;
|
||||
};
|
||||
|
||||
|
||||
|
@ -75,6 +94,7 @@ private:
|
|||
public: \
|
||||
virtual bool addToScene(EntityItemPointer self, std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges) override { return _renderHelper.addToScene(self, scene, pendingChanges); } \
|
||||
virtual void removeFromScene(EntityItemPointer self, std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges) override { _renderHelper.removeFromScene(self, scene, pendingChanges); } \
|
||||
virtual void locationChanged() override { EntityItem::locationChanged(); _renderHelper.notifyChanged(); } \
|
||||
private: \
|
||||
SimpleRenderableEntityItem _renderHelper;
|
||||
|
||||
|
|
Loading…
Reference in a new issue